C 關聯式容器的簡單使用(下)

2021-09-25 19:58:10 字數 2321 閱讀 6418

c++98中,stl提供了底層為紅黑樹結構的一系列關聯式容器,在查詢時效率可達到log2(n),即最差情況下需要比較紅黑樹的高度次,當樹中的結點非常多時,查詢效率也不理想。最好的查詢是,進行很少的比較就能夠將元素找到,因此在c++11中,stl又提供了四個unordered系列的關聯式容器,這四個容器與紅黑樹結構的關聯式容器的使用方法基本相同,只是其底層結構不同,unordered系統的關聯式容器的底層結構是雜湊桶。

看到英文不要慌翻譯在下面(o(∩_∩)o哈哈~)

unordered_map是儲存鍵值對的關聯式容器,其允許通過keys快速的索引到與其對應的value

在unordered_map中,鍵值通常用於唯一地標識元素,而對映值是乙個物件,其內容與此鍵關聯。鍵和對映值的型別可能不同

在內部,unordered_map沒有對按照任何特定的順序排序,為了能在常數範圍內找到key所對應的value,unordered_map將相同雜湊值的鍵值對放在相同的桶中

unordered_map容器通過key訪問單個元素要比map快,但它通常在遍歷元素子集的範圍迭代方面效率較低

unordered_maps實現了直接訪問操作符(operator),它允許使用key作為引數直接訪問value

它的迭代器只能是前向迭代器

函式宣告

功能介紹

bool empty() const

檢測unordered_map是否為空

size_t size() const

獲取unordered_map的有效元素個數

函式宣告

功能介紹

begin()

返回unordered_map第乙個元素的迭代器

end()

返回unordered_map最後乙個元素下乙個位置的迭代器

cbegin()

返回unordered_map第乙個元素的const迭代器

cend()

返回unordered_map最後乙個元素下乙個位置的const迭代器

函式宣告

功能介紹

operator()

返回與key對應的value,沒有則返回預設值

注意:該函式中實際呼叫雜湊桶的插入操作用引數key與v()構造乙個預設值往底層雜湊桶中插入如果key不在雜湊桶中,插入成功,返回v();插入失敗,說明key已經在雜湊桶中,將key對應的value返回

函式宣告

功能介紹

iterator find(const k& key)

返回key在雜湊桶中的位置

size_t count(const k& key)

返回雜湊桶中關鍵碼為key的鍵值對的個數

注意:unordered_map中可以是不能重複的,因此count函式的返回值最大為1。可以使用count介面判斷是否存在問題

函式宣告

功能介紹

insert()

向容器中插入鍵值對

erase()

刪除容器中的鍵值對

void clear()

清空容器中有效元素個數

void swap(unordered_map&)

交換兩個容器中的元素

函式宣告

功能介紹

size_t bucket_count()const

返回雜湊桶中桶的總個數

size_t bucket_size(size_t n)const

返回n號同種有效元素的總個數

size_t bucket(const k& key)

返回元素key所在的桶號

這裡就不寫**演示了和map/set/multimap/multiset的用法基本相同;另外可以參考官方文件

unordered系列的其他三個容器介面類似,可以查閱官方文件,如下:

兩大類關聯式容器的區別

C 容器 關聯式容器

由於multimap和map相差不大,所以基本以map做練習 集合 map 是一種包含已 排序 公升序 物件的關聯 容器。map multimap會根據待定的排序準則,自動將元素排序。兩者不同在於前者不允許元素重複,而後者允許。集合元素的第乙個引數是key,第二個元素當做value,元素的順序與ke...

C 關聯容器map的簡單使用

一 map容器的定義 map是stl的乙個關聯容器,它是乙個單對映容器。它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map 現一次,第二個可能稱為該關鍵字的值 的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。這裡說下map內部資料的組織,m...

C 關聯式容器(set)詳解

關聯容器與序列容器有著根本性的不同,序列容器的元素是按照在容器中的位置來順序儲存和訪問的,而關聯容器的元素是按關鍵元素來儲存和訪問的。關聯容器支援高效的關鍵字查詢與訪問。兩個主要的關聯容器型別是map與set。概念 set裡面每個元素只存有乙個key,它支援高效的關鍵字查詢操作。set對應數學中的 ...