unorder_map有3種常見按鍵查值方法。
使用標頭檔案和,以及命名空間std。
第一種是按鍵訪問。如果鍵存在,則返回鍵對應的值;如果鍵不存在,則返回0;
1 #include2 #include34using
namespace
std;56
intmain()
1314
/*15016
117*/
利用第一種訪問方式,可以簡單地往雜湊表裡面新增元素。
1 test_map[1]++;2 test_map[2] = test_map[2] + 1
;3 cout << test_map[0] << endl << test_map[1];4
5/*61
718可以發現上面兩種方式都可以往雜湊表中新增元素和改變元素的值,用起來比較方便。
9在進行比較的時候,不需要判斷雜湊表中鍵是否存在。
10*/
第二種是使用雜湊表成員函式count查詢,count函式計算雜湊表中要查詢鍵的個數,在雜湊表中返回的值只有0和1
即雜湊表中是否存在要查詢的鍵。
1 #include2 #include34using
namespace
std;56
intmain()
1516
/*17118
119020
*/
第三種方式是使用雜湊表成員函式find進行查詢,如果返回的值是雜湊表的迭代器型別。
如果等於雜湊表的末尾,則表示鍵不在雜湊表中。
如果不等於雜湊表的末尾,則可以通過iter->first來訪問要查詢的鍵,通過iter->second來訪問要查詢的鍵對應的值。
1 #include2 #include34using
namespace
std;56
intmain()
15else
19 cout <20 key = 1
;21 tmp =test_map.find(key);
22if (tmp ==test_map.end())
25else
29return0;
30}3132
/*33
exist key 0
34first: 0 second: 1
3536
no key 1
37*/
以上就是unordered_map的幾種按鍵查詢比較。
最近在leetcode上做題的時候,對unordered_map的查詢以及返回值有一些疑惑,所以寫了這篇部落格。
C 中unordered map的用法
c 使用unordered map include 在unordered map之前加上tr1庫名,using namespace std tr1 與此同時需要加上命名空間 查詢元素是否存在 若有unordered map mp 查詢x是否在map中 方法1 若存在 mp.find x mp.end...
C 中map和unordered map的用法
map和unordered map都是c 中可以充當字典 key value 來用的資料型別,但是其基本實現是不一樣的。對於map的底層原理,是通過紅黑樹 一種非嚴格意義上的平衡二叉樹 來實現的,因此map內部所有的資料都是有序的,map的查詢 插入 刪除操作的時間複雜度都是o logn 此外,ma...
C 中unordered map的版本相容性問題
在c 中最讓我蛋疼的事情之一就是unordered map千呼萬喚才出來,在c 早期版本標準庫裡面只有map這個字典。但是map的內部實現是採用的紅黑樹,眾所周知,對於字典這類結構也可以用hash表來實現,也就是c 的標準庫應該也要有hash map這種資料結構。在c 中關於map的hash表方法的...