C Primer 筆記 關聯容器

2021-06-19 23:45:50 字數 2352 閱讀 9220

關聯容器(associative container) 支援通過鍵來高效的查詢和讀取元素。

map  關聯陣列,元素通過鍵來儲存和讀取

set   大小可變的集合,支援通過鍵來快速讀取

multimap 支援同乙個鍵出現多次的map型別

multiset 支援同乙個鍵多次出現的set型別

pairp1; 

建立乙個pair物件,兩個元素分別為 t1 和 t2 的型別,值初始化

pairp1(v1, v2)

建立乙個pair物件,兩個元素分別為 t1 和 t2 的型別,其中first成員初始化為 v1, senond成員初始化為 v2

make_pair(v1, v2)

以 v1 和 v2 的值建立乙個新的pair物件,其元素型別為 v1 和 v2 的型別

p1 < p2

p1 == p2

p.first

p.second

關聯容器不提供 back 、 push_back 、 pop_back 、 front 、 push_front 、 pop_front  操作

關聯容器不支援 assign 、 resize 操作

關聯容器的 erase 操作返回值為空 

關聯容器三種建構函式

cc ;

cc1(c2);

cc1(b, e);

map::key_type  

在map容器中,用於索引的鍵的型別

在map容器中,鍵所關聯的值的型別

map::value_type

對map的迭代器進行解引用將會得到乙個 pair 型別,它的first成員為 const 。

使用下標訪問 map 物件 。note:用下標訪問不存在的物件會在map容器中新增乙個新的元素,他的鍵值為下標值;如果該鍵存在,則返回先關聯的值

insert操作

m.insert(e)

e是乙個用在map上的 value_type 型別的值。如果 e.first  不存在,則插入乙個值為  e.second 的新元素。如果存在,則保持m不變。 返回值為乙個 pair型別物件,包含指向 e.first 的元素的迭代器,以及乙個 bool 型別的物件,表示是否插入該元素

m.insert(beg, end) 

beg 和 end 是標記元素範圍的迭代器,其元素型別必須是 m.value_type 型別的鍵-值對。對於該範圍內的元素,如果它的鍵在m中不存在,則將該鍵及其所關聯的值插入m中。返回為 void 

m.insert(iter, e)

e 是乙個 value_type 型別的值

m.count(k)

返回m中k出現的次數,在map中,返回 0 或者 1

m.find(k)

返回乙個迭代器,指向指定元素或者末端元素的下乙個位置

m.erase(k)

刪除m中鍵為k的元素,返回刪除的個數,在map中 為 0 或者 1

m.erase(p)

刪除迭代器 p 所指向的元素。p 必須指向m中的元素,而且不能為 m.end()。返回值為 void

m.erase(b ,e)

返回值為 void 。b 和 e必須指向m中的有效元素範圍。

set 容器只是單純的鍵的集合 

set容器和map容器的區別

1、set容器不支援下表操作

2、set容器的value_type 為 key_type,map容器為 pair

m.insert(e) 

返回值為pair型別,包含乙個迭代器和 bool型別物件。

m.insert(p)

m.insert(b, e)

m.count(e)

m.find(e)

set容器的刪除和map相似

insert() 

由於鍵不要求唯一,所以每次操作都會插入乙個新的元素

erase(k)

返回值為刪除的元素個數

erase(b)

erase(b, e)   返回值為void

關聯容器的元素是按順序儲存的,所以在 multimap 和 multiset 容器中,如果乙個鍵對應多個值,則這些值在容器中相鄰存放

count()

返回某鍵出現的次數

find()

返回乙個迭代器,改迭代器指向擁有正在查詢的鍵的第乙個例項或者末端元素的下乙個位置

lower_bound(k)

返回乙個迭代器,指向不小於 鍵 k 的第乙個元素

upper_bound(k)

返回乙個迭代器,指向大於鍵 k的第乙個元素

equal_range(k)

返回乙個迭代器的 pair 物件 它的first成員為 lower_bound(k);它的第二個成員為 upper_bound(k)

《C Primer》學習筆記 關聯容器

一,pair型別 pairp1 建立乙個空pair指標,兩個元素分別是t1,t2型別,採用值初始化 pairp1 v1,v2 first成員初始化為v1,second成員為v2 make pair v1,v2 建立新的pair物件 p1 p2 p1 p2 p.first 返回first成員 p.se...

C primer 關聯容器

pairp1 pairp1 v1,v2 v1為t1型別,v2為t2型別 make pair v1,v2 返回乙個pair物件 p.first p.second 關聯容器不能通過容器大小定義,不能用resize。mapm m2 mapm mapm b,e b,e為map迭代器。鍵必須支援 map ke...

c Primer筆記(十 關聯容器)

第十章 關聯容器。set map multimap multiset 鍵是唯讀的,試圖修改只有出錯的份 1.關聯容器和順序容器的本質差別在於 關聯容器通過key鍵儲存和讀取元素,而順序容器則通過元素在容器中的位置順序儲存和訪問元素。2.set僅僅包含乙個鍵,並有效的支援關於某個鍵是否存在的查詢。即儲...