我知道std::vector
中我最初需要多少空间。所以我使用.resize()
将新向量设置为该大小。但是在之后使用.push_back()
时,它会在分配大小的末尾添加元素,将其增加一个。
如何在已调整大小的矢量的空位中自动添加新元素?
答案 0 :(得分:6)
如何在已调整大小的矢量的空位中自动添加新元素?
这就是你在做什么。 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.
答案 1 :(得分:3)
使用方法reserve
代替resize
,您的push_back
无需重新分配内存即可完成工作。