關聯容器總結

2022-08-29 01:09:10 字數 2358 閱讀 9336

1.容器型別

按關鍵字有序儲存元素:

map:用來儲存鍵值對,關鍵字不可以重複

set:只儲存關鍵字,關鍵字不可重複

multimap:用來儲存鍵值對,關鍵字可以重複

multiset:只儲存關鍵字,關鍵字可以重複

無序集合:

unordered_map:用雜湊函式組織的

mapunordered_set:用雜湊函式組織的

setunordered_multimap:用雜湊函式組織的

map,關鍵字可重複

unordered_multiset:用雜湊函式組織的

set,關鍵字可重複

2.定義和初始化容器

可以使用3

1.c=  按括號中的列表進行初始化

mapword_count=,  };

2.初始化為另乙個同型別容器的拷貝

c c(c1)     c初始化為

c1的拷貝

3.按照迭代器範圍來初始化容器

c c(b,e)    將

b,e迭代器之間的元素拷貝到

c3.關聯容器額外的型別別名

key_type:容器的關鍵字型別

對於set

容器,key_type

和value_type

一樣對於map

容器,表示關鍵字的型別

map,每個關鍵字關聯的值的型別

value_type:對於

set,與

key_type

相同對於map

,表示鍵值對

pair鍵值對有兩個公有成員

first

和second

,分別表示關鍵字和值

4.新增元素

c.insert(v)

c.emplace(args)

對於map

,set

:只有當元素不再容器中才插入

v,返回乙個

pair

,first

成員表示乙個迭代器,指向該關鍵字,

second

成員是  表示是否插入成功的  

bool

值對於multimap

和multiset

:無論什麼時候都會插入

v,並返回乙個指向新元素的迭代器

c.insert(b,e)   

c.insert(li)

分別表示插入b,e

迭代器之間的元素,插入

li列表中的元素,返回

void

對於map

,set

:只會插入不再容器中的元素

對於multimap

和multiset

:插入每個元素

c.insert(p,v)

c.empalce(p,args)

並不是插入到p

之前(與順序容器不同),而是指示從

p迭代器開始搜尋,插入到指定位置(因為有序容器中的元素是有序的)

5.刪除容器

c.erase(k):刪除關鍵字為

k的元素,返回被刪除元素的數量

c.erase(p):刪除

p迭代器指向的元素,返回指向被刪元素之後元素的迭代器,

p必須指向

c中的真實元素

c.erase(b,e):刪除迭代器

b,e之間的元素,返回

e6.訪問元素

c.find(k):返回指向第乙個關鍵字為

k的迭代器,若不存在

k,返回尾後迭代器(

c.end()

)c.count(k):返回關鍵字等於

k的元素數量,對於

set和

map,元素數永遠為1和

0c.lower_bound(k):返回乙個迭代器,指向第乙個  關鍵字

>=k 

的元素c.upper_bound(k):返回乙個迭代器,指向第乙個 關鍵字

>k 

的元素c.equal_range(k):返回乙個迭代器

pair

,表示關鍵字

=k的元素範圍,若

k不存在,

pair

兩個成員都為

c.end()

注:使用c.lower_bound(k)

和c.upper_bound(k)

配合查詢k,若

k存在,分別返回第乙個指向

k的迭代器和最後乙個指向

k元素之後的迭代器(不是最後乙個k

元素),若

k不存在,則這兩個迭代器相等。

C 關聯容器總結

關聯容器 關聯容器共享大部分 但不是全部 順序容器的操作。關聯容器不提供front,push front,pop front,back,push back,pop back等操作。一 map和set型別 1 關聯容器的型別 1 map定義的型別 map key type 鍵的型別 const str...

關聯式容器的總結

今天細緻的學習了map和set容器的用法和功能,終於感受到了自己之前對stl的認識還是太少太淺薄了 今天我來總結一下答題的框架 容器首先分為關聯式容器和序列式容器,簡單的是序列式容器,我先說一下序列式容器,序列式容器其實說白了就是簡單的鍊錶的實現,內部查詢的順序都是按照鍊錶的順序結構來查詢刪除和實現...

STL的關聯式容器總結

map是紅黑樹 一種非嚴格意義上的平衡二叉樹 置於紅黑樹的具體可以看演算法和資料結構,這裡不多說。map的key型別必須要過載 操作符,無法過載時用自定義仿函式代替map的第三個引數,因為map是有序的。map第乙個引數是key,第二個引數是value,第三個引數是compare函式,第四個引數是記...