大家用了stl的list后都知道,他的節(jié)點在內(nèi)存中的位置是固定的,但是當(dāng)刪除或查找某個指定節(jié)點時需要遍歷,這樣當(dāng)list很大時,這個遍歷過程未免有些性能詬病。當(dāng)然大家會很容易想到hash_map,但是hash_map在節(jié)點數(shù)超過一定數(shù)量后也會進(jìn)行“擴(kuò)容”操作,這樣存在大量的對象的搬遷。我們看看list的特點:結(jié)構(gòu)簡單,節(jié)點的內(nèi)存地址固定,添加刪除操作快捷;再看看hash_map的特點:查找速度快,節(jié)點的內(nèi)存地址可能不固定(依賴是否擴(kuò)容),如果我們將兩者結(jié)合可以解決某些特殊應(yīng)用場合(指那些可能需要記錄節(jié)點內(nèi)存位置的場合)。用一個list和一個hash_map來管理一個數(shù)據(jù)列表,list記錄具體的節(jié)點的數(shù)據(jù),hash_map用于記錄list的迭代器地址,這樣需要查找一個鍵值為key的對象在list中的節(jié)點時,可以通過hash_map來進(jìn)行定位,具體性能如何沒有測試過,應(yīng)該不會比list的直接遍歷查找慢,大家可以自己試試。