1. 程式人生 > >C++淺談雜湊表和STLmap

C++淺談雜湊表和STLmap

題目:
對比雜湊表和STL map。雜湊表是怎麼實現的?如果輸入資料規模不大, 我們可以使用什麼資料結構來代替雜湊表。

解答:
對比雜湊表和STL map
在雜湊表中,實值得儲存位置由其鍵值對應得雜湊函式值決定。因此,儲存在雜湊表中得值是無序得。在雜湊表中插入和刪除的時間複雜度都是o(1)。實現一個雜湊表,衝突處理時必須的。

對於STL中的map,鍵/值對在其中是根據鍵進行排序的。它使用一根紅黑樹來儲存資料,因此插入和查詢元素的時間複雜度都是o(nlongn)。

雜湊表是怎麼實現的:
1.首先需要一個好的雜湊函式來確定雜湊值是均勻分佈的。
2.其次需要一個好的衝突解決辦法:連結串列發(表中元素比較密集的時候使用此方法),探測法(表中元素比較稀疏的時候用)
3.動態增加或減少雜湊表的大小。

如果輸入資料規模不大,我們可以使用什麼資料結構來代替雜湊表。
你可以使用STL map來代替雜湊表,儘管插入和查詢元素的時間複雜度是O(logn), 但由於輸入資料的規模不大,因此這點時間差別可以忽略不計。