Re: [STL ] 使用map的記憶體問題
※ 引述《jesony1 (小豬先生)》之銘言:
: 推 chrisdar:a.swap(map()) 05/12 21:08
: 推 jerohands:可以請問為何要作swap()?在clear()之後作這項似乎沒有 05/14 00:40
: → jerohands:意義。基本上寫法都沒問題,那可能的問題就在於你定義的 05/14 00:40
這是 Clear-and-minimize idiom
因為 STL 的 clear() 通常不保證會真正釋放
以備容器之後又要用到這塊
因此有個慣用手法確保它一定會釋放空間:
std::map< ... >().swap( a );
1. 建構一個空的暫時物件
2. 暫時物件的內容和 a 調換(這時候 a 是真正空的,沒有 buffered space)
3. 暫時物件跟著原本 a 的內容一起被釋放
當然,如果內容物本身就會 leak ,這手法也沒用 XD
Reference:
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Clear-and-minimize
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.127.21.174
→
05/14 02:17, , 1F
05/14 02:17, 1F
推
05/14 15:39, , 2F
05/14 15:39, 2F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章