unordered_map
是乙個儲存由key
和value
對映值組成的關聯容器。該key
值用於唯一表示該元素,而對映值是該key
值關聯的內容。key
和value
都可以被預定義或使用者定義為任何型別。
在內部,unordered_map
是用hashtable
來實現,該key
提供的對映被雜湊為雜湊表的索引,這也就是為什麼資料結構的效能很大程度上依賴於雜湊後函式。而從雜湊表中search,insert,delete
操作,平均複雜度為o(1)
.
下面是c++
程式演示unordered_map
功能的例子。
輸出結果:#include
#include
using namespace std;
intmain
(int argc,
char
const
*ar**)
return0;
}
geeksforgeeks 10在contribute 30
feel 1999
unordered_set
中,只有key
,沒有value
,主要用於檢視在乙個集合中是否存在。例如,考慮單個單詞的頻率計數問題,我們不能使用unordered_set(或set)
,因為無法儲存計數個數.
map(與set類似)
是乙個有唯一值的有序序列,在unordered_map
中key
可以儲存任何順序:有序和無序。map
是作為乙個平衡樹的實現,這也是它為什麼可以維護元素之間的順序(通過特定的樹遍歷).map
操作的時間複雜度為o(log n)
,對於unordered_set
平均複雜度為o(1)
.
unordered_map
中有相當多函式,其中最有用的有operator=,operator,empty,size,capacity,begin,end,iterator,find,和count,insert,earse
等方法。
我們可以使用iterator
遍歷unordered_map
所有元素。下面是乙個初始化,索引,迭代的例子:
輸出結果:#include
#include
using namespace std;
intmain()
else
//遍歷umap中的所有值
// unordered_map::iterator it;
cout<"all elements:"
auto it=umap.
begin()
;it!=umap.
end(
);it++
)for
(auto x:umap)
return0;
}
found piall elements:
loge 1
e 2log10 2
root3 1
pi 3
root2 1
loge 1
e 2log10 2
root3 1
pi 3
root2 1
#includeusing namespace std;#include
using namespace std;
void
prints
(const string &s)
for(
auto it=umap.
begin()
;it!=umap.
end(
);it++)}
intmain()
typedef unordered_mapgfg;
int main() {
gfg g;
g.insert(gfg::value_type('a','b'));
g.insert(gfg::value_type('b','d'));
g.insert(gfg::value_type('e','f'));
//』f'作為『key』,
pairp1=g.equal_range('f');
//不存在'f'
cout<<"nsearch for f:";
for(;p1.first!=p1.second;++p1.first){
coutsecond << "]"《輸出:
nsearch for f:search for 『a』 : [a, b]
容器 順序容器 關聯容器
容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...
STL 關聯容器
1 關聯容器與順序容器的本質區別 關聯容器通過鍵 key 儲存和讀取元素,而順序容器則通過元素在容器中的位置順序儲存和訪問元素。2 關聯容器的型別 map set multimap multiset 3 pair型別 pair型別的比較 p1 p1 p2 如果兩個pair物件的first和secon...
c 關聯容器
1.map建構函式 mapm 普通初始化 mapm m2 複製初始化法 mapm b,e 另乙個map物件的迭代器初始化法 注意 1 鍵值型別必須定義 操作符號,資料訪問時需要呼叫。2 m aaa 下表訪問方式導致的結果是,若鍵對應的值不存在,則插入該鍵值對應的預設值。2.map插入操作 m.ins...