繁体   English   中英

控制std :: vector重新分配

[英]Control over std::vector reallocation

通过阅读std::vector引用我明白了

  1. 当达到最大容量时调用insert将导致重新分配std::vector (导致迭代器失效),因为为其分配了更大容量的新内存。 目标是保证连续数据的保证。

  2. 只要我坚持低于最大容量insert就不会导致(并且迭代器将完好无损)。

我的问题如下:

reserve被自动调用insert ,有没有什么办法来控制多新的内存必须如何保留?

假设我有一个初始容量为100的向量,当达到最大容量时,我想分配额外的20个字节。

有可能吗?

您可以随时自行跟踪并在分配之前调用预留,例如

static const int N = 20 // Amount to grow by
if (vec.capacity() == vec.size()) {
  vec.reserve(vec.size() + N);
}
vec.insert(...);

您可以将它包装在您自己的函数中并调用该函数,而不是直接调用insert()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM