2012-06-13 58 views
0

如果我有一個向量數組,由於數組的連續存儲性質,矢量是否會受其調整大小的限制?陣列中的向量

+0

它不會。矢量可以調整大小以容納更多空間,但數組只能容納最多數量的矢量容器。 –

+1

總而言之,不。該向量處理的內存不是數組的一部分。 – Dave

+2

不,到目前爲止每個人都已經回答了,但是你不需要有一組向量,你可以有一個向量向量:'std :: vector >' – Collin

回答

0

resize根本不會影響陣列的內存。矢量具有指向實際存儲的指針,因此調整大小會影響與數組無關的其他一些內存。數組中的所有內容基本上只是指向可能不同長度的內存塊的指針。

此外,如果你有這樣的事情:

std::vector<int> arr [5]; 

數組的內存將在堆棧上,而向量的記憶將在堆上。完全不同!

1

否;在內部,向量將指針保存到內存塊,而不是塊本身。

2

是的,但不像你想的那樣。

向量必須爲其內容找到連續的地址空間。內存碎片可能導致最大的連續塊比總空閒內存小。並且有許多向量使分裂更可能。

+0

這不是不可能的,因爲虛擬內存可以擴展到硬盤上嗎? –

+0

@rm:然後你所有的代碼對我們來說都很慢 – jxh

+0

@rm:碎片不是關於物理頁面,而是虛擬地址空間。如果您只有32位指針,則無論您擁有多少虛擬內存。 –