0

如果我有一个向量数组,由于数组的连续存储性质,向量的大小调整能力会受到限制吗?

4

3 回答 3

2

是的,但不是你想的那样。

向量必须为其内容找到连续的地址空间。内存碎片可能会导致最大的连续块小于总可用内存。并且拥有许多向量会使碎片更有可能。

于 2012-06-13T01:37:23.823 回答
1

不; 在内部,向量保存指向内存块的指针,而不是块本身。

于 2012-06-13T01:34:47.527 回答
0

resize根本不会影响数组的内存。向量有一个指向实际存储的指针,因此调整大小会影响与数组无关的其他一些内存。数组中的所有内容基本上只是指向可能不同长度的内存块的指针。

此外,如果你有这样的事情:

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

数组的内存将在堆栈上,向量的内存将在堆上。完全不同!

于 2012-06-13T01:34:41.370 回答