C 標準庫之關聯容器 C Primer

2021-09-29 13:32:31 字數 1211 閱讀 2519

map\multimap  set\multiset  關聯容器是通過紅黑樹來實現的。
1、關聯容器的初始化

2、關鍵字型別的要求

3、pair型別

定義在utility標頭檔案中,含有first和second兩個public資料成員

4、關聯容器的操作

4.1 關聯容器額外的型別別名

4.2 新增元素

4.3 刪除元素

4.4 map的下標操作

返回型別是map_type的引用。
4.5 訪問元素
lower_bound和upper_bound不適用於無序容器
unordered_map\unordered_multimap  unordered_set\unordered_multiset
1 如果關鍵字型別固有就是無序的,或者效能測試發現問題可以用雜湊技術解決,就可以使用無序容器。

2 無序容器在儲存上組織為一組桶,每個桶有零個或多個元素。無序容器使用乙個雜湊函式將元素對映到桶。也就是使桶的容量大於等於衝突元素的數量,乙個桶可能容納幾個雜湊值的元素

1、無序容器的管理操作

(1)、桶介面

(2)、桶迭代

(3)、雜湊策略

2、無序容器對關鍵字型別的要求

//定義sales_data型別的雜湊函式

size_t hasher

(const sales_data &sd)

//定義sales_data型別的相等性判斷運算子函式

bool

eqop

(const sales_data &lhs,

const sales_data &rhs)

//無序容器型別要指明元素型別、雜湊函式型別,相等性判定函式型別

using sd_multiset = std::unordered_multisetdecltype

(hasher)*,

decltype

(eqop)

*>

;//無序容器的初始化,指明桶大小、雜湊函式指標、相等性判定運算子指標

sd_multiset bookstore(42

, hasher, eqop)

;

C 標準庫關聯容器

1 關聯容器定義 儲存物件集合的型別,支援通過鍵的高效訪問。和順序容器的本質差別在於 順序容器通過元素在容器中的位置順序儲存和訪問元素,而關聯容器卻是依靠鍵。map和set是兩個基本的關聯容器型別,map以鍵值對的形式組織儲存元素,而set僅儲存鍵。2,pair型別 在utility標頭檔案中定義 ...

c 標準庫之容器

c 最原始的容器之一是陣列。陣列的特點有 1.大小固定 2.單獨存在的陣列建立在棧上,作為物件成員存在的陣列建立在堆上還是棧上則要看作為宿主物件是被建立在堆上還是棧上。棧空間是有限的,所以如果陣列在棧上,則不能容納太多元素,否則會導致stack overflow。c 最原始的容器之二則是用乙個指標指...

STL標準庫的關聯容器

關聯容器支援高效的關鍵字查詢和訪問。map中的元素是一些關鍵字 值 key value 對 關鍵字起到索引的作用,值則是表示與索引相關聯的資料。set中每個元素只包含乙個關鍵字,可以說set是乙個特殊的map。標準庫提供8個關聯容器,允許重複關鍵字的容器的名字中都包含單詞multi 不保持關鍵字按順...