c++ - std::vector 向下调整大小

标签 c++ vector resize std stdvector

C++ 标准似乎没有说明两者对容量的副作用 resize(n) , 与 n < size() , 或 clear() .

它确实对 push_back 的摊余成本做出了声明和 pop_back - O(1)

我可以设想一种实现通常的容量变化 ala CLRS 算法(例如,放大时加倍,减小时减半 size to < capacity()/4)。 (Cormen Lieserson Rivest Stein)

谁有任何实现限制的引用?

最佳答案

调用resize()较小的尺寸对 vector 的容量没有影响.它不会释放内存。

vector 中释放内存的标准习惯用法是swap()它带有一个空的临时vector : std::vector<T>().swap(vec); .如果要向下调整大小,则需要从原始 vector 复制到新的本地临时 vector ,然后将生成的 vector 与原始 vector 交换。

更新: C++11 添加了成员​​函数 shrink_to_fit() 为此,减少 capacity() 的请求不具约束力。至size() .

关于c++ - std::vector 向下调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1155693/

相关文章:

c++ - 丢失的 ;在标识符 cout 之前

c++ - 如何从文件夹中获取文件名并保持文件名顺序不变?

c++ - gcc4.2 中的 std::vector::resize

c++ - std::optional 参数是否创建拷贝?

c++ - ndk-build 给我 "error: undefined reference"到 cv::CascadeClassifier::load(std::string const&) 即使在我链接库之后

c++ - 如何调试仅发行错误,似乎是某种随机破坏

r - 顺序删除向量元素

c++ - 为 lldb 中的大型数据结构设置观察点

android - Android中ImageView的最大宽度和高度

WPF/XAML : How do I size a window with no border?