如何在调整大小的 std::vector 的最后一个元素之后插入?
Posted
技术标签:
【中文标题】如何在调整大小的 std::vector 的最后一个元素之后插入?【英文标题】:How to insert after the last element of a resized std::vector? 【发布时间】:2013-12-04 07:12:45 【问题描述】:我知道 std::vector
最初需要多少空间。所以我使用.resize()
将新向量设置为该大小。但是当之后使用.push_back()
时,它会在分配的大小末尾添加元素,将其增加一。
如何在调整大小的矢量的空白处自动添加新元素?
【问题讨论】:
使用reserve
而不是resize
。然后您可以像往常一样push_back
,但不会导致任何内存重新分配。
【参考方案1】:
如何在调整大小的矢量的空白处自动添加新元素?
这就是你正在做的事情。 resize
用值初始化的元素填充新空间,因此没有“空位”。看来您需要改为致电std::vector::reserve
。
std::vector<int> v1,2,3,4; // size = 4
v.reserve(100); // size = 4, capacity = 100
v.push_back(5); // no re-allocations. size 5.
【讨论】:
【参考方案2】:通过使用方法reserve
而不是resize
,您的push_back
将在不重新分配内存的情况下完成这项工作。
【讨论】:
以上是关于如何在调整大小的 std::vector 的最后一个元素之后插入?的主要内容,如果未能解决你的问题,请参考以下文章
如何调整 Eigen::MatrixXd 的 std::vector 的大小