c++容器调用clear会释放内存吗

只有含 reserve()/capacity() 成员函数的容器才需要用 swap idiom 来释放空间,而 C++ 里只有 vector 和 string 这两个符合条件。在 C++11 中可以直接使用 shrink_to_fit()。

list/deque/set/map 等容器是没有 reserve() 和 capacity() 这两个成员函数的,因此 swap 是无用功(除非用户代码使用了定制的 per-object allocator)。

链接:https://www.zhihu.com/question/19752706/answer/23215549

posted @ 2024-12-17 10:41  hugingface  阅读(39)  评论(0)    收藏  举报