清空vector并释放内存需用swap技巧或shrink_to_fit;clear仅删除元素不释放内存,swap通过临时对象交换释放容量,C++11后可用shrink_to_fit请求缩减容量。

在C++中,清空一个
vector
clear()
clear() 会移除
vector
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.clear(); // 元素被删除,size 变为 0
// 此时 capacity 可能仍为 5 或更大
最经典的方法是使用空vector与原vector交换,强制释放内存。
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int>().swap(vec);
// 原vector内存被释放,capacity变为0
这行代码创建一个临时空
vector
swap
立即学习“C++免费学习笔记(深入)”;
C++11引入了shrink\_to\_fit(),请求容器减少容量以匹配当前大小。
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.clear();
vec.shrink_to_fit(); // 尝试释放多余内存
注意:
shrink_to_fit()
另一种等效方式是直接赋值一个空
vector
std::vector<int> vec = {1, 2, 3, 4, 5};
vec = std::vector<int>();
// 等价于 swap 技巧,内存会被释放
这种写法更直观,编译器优化后性能与
swap
基本上就这些方法。如果只是临时清空且后续还会添加元素,用
clear()
swap
shrink_to_fit
以上就是c++++中如何清空vector_C++ vector容器清空与内存释放的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号