2011-03-28 80 views
-1

我看到一本書這樣一個問題:的std ::矢量成員函數

什麼部件的std ::載體的功能是控制分配的內存?

有人可以回答嗎?
謝謝

+1

你如何定義「控制」?重新分配它?更改裏面存儲的值?還有別的嗎? – interjay 2011-03-28 15:32:30

+0

我不確定,這本書中的問題是如何被問到的......我想重新分配 – Kobe 2011-03-28 15:37:44

+0

所以,你不知道你的實際問題是什麼?那爲什麼要問呢? – 2011-03-28 15:41:38

回答

1

Container類的內存分配由爲其中的每個定義的基礎Allocator管理。
幾乎所有的成員函數都會分配內存control

-1

http://msdn.microsoft.com/en-us/library/k449z507(v=VS.100).aspx

是有限制的,要求由谷歌搜索「矢量成員函數」回答了這個地方的問題。

+0

再次閱讀我的文章,並試圖找出我所問的。謝謝。 – Kobe 2011-03-28 15:36:46

+0

雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 – NullUserException 2011-12-10 01:46:34

0

預期的答案,這可能是resizereserveclear雖然後者則實際上控制所分配的內存,它只是不修改底層緩衝區重置「已知」的大小爲零。

0

所有這些。他們都沒有。這是一個實現細節。 你不知道,也沒關係

+0

這並不完全正確。當一個向量分配內存時,它將使所有迭代器無效。當它不是時,它只會使迭代器超過參與更改的元素。 – 2011-03-28 15:37:30

+0

您知道,因爲標準指定了重新分配何時發生,並且確實很重要,因爲重新分配使向量內容的所有指針和迭代器無效,並且因爲有時您需要確定性的性能。 – 2011-03-28 17:22:20

0

默認構造函數可能會或可能不會分配內存。

如果vector最初不是空的,其他構造函數將分配內存,如果它是空的,它可能會也可能不會。如果新的大小或容量超過當前容量

operator=assigninsertpush_backreserveresize將重新分配存儲器中,並且不會以其他方式。

析構函數將釋放任何分配的內存。

沒有其他成員函數會改變內存分配,儘管有些可能會改變或使內存內容無效。