看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
jerohands:受教了 05/14 02:17
jesony1:swap這個方法似乎只對vector有用~對map沒用 05/14 15:39