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