map與unordered map效率的比較

2021-06-11 04:36:51 字數 1043 閱讀 5389

之前在某blog看到map在非常少量資料下插入效率高於unordered_map。

自己測了一下並非如此,在設定合適的桶數的情況下,有如下結論:

1、插入效率unordered_map任何情況下均優於map,資料越多越明顯。

2、遍歷效率map略優於unordered_map。

補充:1、只在 g++ 4.4.6下測試,-o2與無編譯器優化結果一致。

2、沒有計算rehash與計算素數的時間,因為一般在程式啟動時就rehash了,所以忽略掉。

直接上**

#include #include #include #include #include #include #include #include using namespace std;

/// 返回大於1.5 * num的第乙個素數

inline size_t get_hash_table_size(unsigned int num)

if (i == j)

return return_num; }}

long get_time_usec_gap(const timeval &start, const timeval &end)

int main()

setrandom_nums_set;

srand(time(0));

for (int i = 0; i < map_size; )

} mapmap_test;

unordered_mapunordered_map_test;

unordered_map_test.rehash(get_hash_table_size(map_size));

struct timeval t_start,t_end;

gettimeofday(&t_start, 0);

for (auto it = random_nums_set.begin(); it != random_nums_set.end(); ++it)

gettimeofday(&t_end, 0);

cout<<"map insert time:"<

集合與map迭代

arraylist list list1 new arraylist address address1 new address 中國 上海 address address2 new address 美國 紐約 address address3 new address 日本 沖繩 list1.add ...

查詢(三)hash 與map

一,hashtable原理 雜湊表又名雜湊表,其主要目的是用於解決資料的快速定位問題。考慮如下乙個場景。一列鍵值對資料,儲存在乙個table中,如何通過資料的關鍵字快速查詢相應值呢?不要告訴我乙個個拿出來比較key啊,呵呵。大家都知道,在所有的線性資料結構中,陣列的定位速度最快,因為它可通過陣列下標...

Map與資料結構

上篇中介紹了collection中arraylist和linkedlist和在資料結構中的分析。但在,由於collection是無論是基於陣列的arraylist還是基於鍊錶的linkedlist它都沒有辦法儲存有關係的資料,比如乙個人的姓名 身份證,這樣有關係的資料。因此就有了map介面。arra...