c++ - 减少STL vector 的容量

标签 c++ stl vector

有没有办法减少 vector 的容量?

我的代码将值插入到 vector 中(事先不知道它们的数量),并且 完成后, vector 仅用于读取操作。

我想我可以创建一个新 vector ,使用大小和拷贝执行 .reseve() 项目,但我真的不喜欢额外的复制操作。

PS:我不喜欢可移植的解决方案,只要它适用于 gcc。

最佳答案

std::vector<T>(v).swap(v);

用另一个 vector 交换内容会交换容量。

  std::vector<T>(v).swap(v); ==> is equivalent to 

 std::vector<T> tmp(v);    // copy elements into a temporary vector
         v.swap(tmp);              // swap internal vector data

Swap() 只会改变内部数据结构。

关于c++ - 减少STL vector 的容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475130/

相关文章:

c++ - 需要结构包含/实现帮助 (c++)

C++ set 和 shared_ptr

c++ - 将整数读入不同的 vector

C++ 通过引用传入 Vector 但更改仍未保存

c++ - 更高效地访问 std::vector

c++ - 在 "a"(追加)模式下打开文件时 fseek 不起作用

c++ - 如何在 C++ 中将值与模板和 boost 进行比较?

c++ - <algorithm>中make_heap()函数的算法

c++ - 解引用迭代器值类型的迭代器

c++ - STL列表、 vector 和集合的底层数据结构是什么?