如何在调整大小的 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 的大小

如何调整 std::vector<std::queue<std::unique_ptr<int>>> 的大小?

std::vector 向下调整大小

std::vector 调整大小算法

调整动态字符串数组的大小[关闭]

调整 std::vector<std::unique_ptr<T>> 大小的性能