1. 程式人生 > >STL中map,multimap,hashmap的區別。

STL中map,multimap,hashmap的區別。

stl中的map就是為了方便查詢和定位。

下面先看看 list存資料和查詢的情況。

1.使用list儲存資料。

list是線性表,佔用的是線性不連續的內容空間。  每個元素只與 它前面/它後面的元素 指向關係。也就是說,你拿到一個元素後,可以找到他的上一個元素或者下一個。要想找到更遠的,那就得一步一步來。

這樣,插入一個list元素,沒有成本,很快。

但是查詢一個list元素,時間成本就比較高了。如果倒黴的你總是從開頭開始找,然後找到最後一個才找到你需要的,那你程式都空跑了好多次,造成效能浪費。

查詢一個list元素的平均時間複雜度是 O(n)。

2.map

map是將key與value進行對映的一種資料結果。

map的key值是按照紅黑二叉樹分佈的。

map插入一個元素和查詢一個元素的複雜度是一樣的,都是O(log2n)。

map不能插入對同一個key插入多個value,否則,後插入的value將覆蓋前面的value。

3.hashmap

hashmap是使用散列表(也叫雜湊表)實現的。

他插入和查詢的速度與 雜湊函式和衝突處理函式的 實現有關,是這兩個函式耗時的總和。是一個常量。