Re: [STL ] 使用map的記憶體問題

看板C_and_CPP (C/C++)作者 (CA)時間16年前 (2009/05/14 02:06), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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
swap這個方法似乎只對vector有用~對map沒用
05/14 15:39, 2F
文章代碼(AID): #1A2mmr0g (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A2mmr0g (C_and_CPP)