【问题标题】:How to insert after the last element of a resized std::vector?如何在调整大小的 std::vector 的最后一个元素之后插入?
【发布时间】:2013-12-04 07:12:45
【问题描述】:

我知道 std::vector 最初需要多少空间。所以我使用.resize() 将新向量设置为该大小。但是当之后使用.push_back() 时,它会在分配的大小末尾添加元素,将其增加一。

如何在调整大小的矢量的空白处自动添加新元素?

【问题讨论】:

  • 使用reserve 而不是resize。然后您可以像往常一样push_back,但不会导致任何内存重新分配。

标签: c++ vector std push-back


【解决方案1】:

如何在调整大小的矢量的空白处自动添加新元素?

这就是你正在做的事情。 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.

【讨论】:

    【解决方案2】:

    通过使用方法reserve 而不是resize,您的push_back 将在不重新分配内存的情况下完成这项工作。

    【讨论】:

      猜你喜欢
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多