關聯容器unordered map詳解

2021-09-22 21:12:44 字數 2669 閱讀 3275

unordered_map是乙個儲存由keyvalue對映值組成的關聯容器。該key值用於唯一表示該元素,而對映值是該key值關聯的內容。keyvalue都可以被預定義或使用者定義為任何型別。

在內部,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_mapkey可以儲存任何順序:有序和無序。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 pi

all elements:

loge 1

e 2log10 2

root3 1

pi 3

root2 1

loge 1

e 2log10 2

root3 1

pi 3

root2 1

#include

using namespace std;

void

prints

(const string &s)

for(

auto it=umap.

begin()

;it!=umap.

end(

);it++)}

intmain()

#includeusing namespace std;

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...