相关疑难解决方法(0)

什么时候std :: vector重新分配它的内存数组?

我找不到任何可以给出明确答案的东西.我只是好奇,如果std :: vector只在绝对必须时重新分配它的内部数组,或者它会在预期中提前重新分配(可以这么说).

例如:

std::vector<int> myVector;
for (int i = 0; i < 1000; ++i) myVector.push_back(i);

cout << myVector.size() << '\n'      // Gives 1000 as expected
     << myVector.capacity() << endl; // Gives 1024 which makes sense
Run Code Online (Sandbox Code Playgroud)

如果我继续添加元素,是否有可能我添加的下24个项目中的一个会改变容量,或者只有在我放入第25个项目后它才会重新分配?

注意:

我在Linux下使用gcc 4.4.3进行了测试,但似乎重新分配是"按需"完成的,但我很好奇我是不是很幸运,或者有什么东西说明这是预期的行为.

c++ stl vector

12
推荐指数
3
解决办法
1万
查看次数

C++ 标准向量 resize() 函数

resize() 根据给定的大小添加/删除元素。Reserve() 保留内存空间,它不会重新分配内存。我的问题是 resize 是否也与向量的容量相同,只是不会增加?

要添加,将组合:

 std::vector<X> vector;
 vector.reserve(5);
 vector.resize(5); 
Run Code Online (Sandbox Code Playgroud)

有道理吗?是多余的吗?这里的目标是能够覆盖向量中的值,而无需向量分配任何额外空间。

c++ resize stdvector

7
推荐指数
1
解决办法
8262
查看次数

标签 统计

c++ ×2

resize ×1

stdvector ×1

stl ×1

vector ×1