我知道std::vector
最初需要多少空间。因此,我使用.resize()
将新向量设置为该大小。但当以后使用.push_back()
时,它会在分配大小的末尾添加元素,使其增加一。
如何在调整大小的向量的空位置自动添加新元素?
如何在调整大小的向量的空位置自动添加新元素?
这就是你正在做的。resize
用值初始化的元素填充新的空间,因此没有"空的地方"。您似乎需要调用std::vector::reserve
。
std::vector<int> v{1,2,3,4}; // size = 4
v.reserve(100); // size = 4, capacity = 100
v.push_back(5); // no re-allocations. size 5.
通过使用方法reserve
而不是resize
,push_back
将在不重新分配内存的情况下完成此任务。