當前位置:
首頁 >
C++ string清空并释放内存空间的两种方法(shrink_to_fit()、swap())
發布時間:2025/3/15
51
豆豆
生活随笔
收集整理的這篇文章主要介紹了
C++ string清空并释放内存空间的两种方法(shrink_to_fit()、swap())
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明
在STL中 vector和string 是比較特殊的,clear()之后是不會釋放內存空間的,也就是size()會清零,但capacity()不會改變,需要手動去釋放,說明 clear() 沒有釋放內存。
想釋放空間的話,除了swap一個空string外,c++11里新加入的的std::basic_string::shrink_to_fit?也可以。
代碼
注意string的swap清空方法為:string().swap(str);
vector的swap清空方法為:nums.swap(vector<int>());
#include <iostream> #include <string>int main() {std::string s;std::cout << "Default-constructed capacity is " << s.capacity()<< " and size is " << s.size() << '\n';for (int i = 0; i < 42; i++)s.append(" 42 ");std::cout << "Capacity after a couple of appends is " << s.capacity()<< " and size is " << s.size() << '\n';s.clear();std::cout << "Capacity after clear() is " << s.capacity()<< " and size is " << s.size() << '\n';s.shrink_to_fit();std::cout << "Capacity after shrink_to_fit() is " << s.capacity()<< " and size is " << s.size() << '\n';for (int i = 0; i < 42; i++)s.append(" 42 ");std::cout << "Capacity after a couple of appends is " << s.capacity()<< " and size is " << s.size() << '\n';string().swap(s);std::cout << "Capacity after swap() is " << s.capacity()<< " and size is " << s.size() << '\n'; }輸出為:
Default-constructed capacity is 15 and size is 0 Capacity after a couple of appends is 235 and size is 168 Capacity after clear() is 235 and size is 0 Capacity after shrink_to_fit() is 15 and size is 0 Capacity after a couple of appends is 235 and size is 168 Capacity after swap() is 15 and size is 0?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的C++ string清空并释放内存空间的两种方法(shrink_to_fit()、swap())的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中swap函数_python
- 下一篇: 优先队列(priority_queue)