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