C 關聯容器

2021-08-08 14:42:11 字數 2284 閱讀 2035

c++中對於容器的分類主要分為:順序容器和關聯容器。

順序容器:主要是靠元素在容器中的儲存位置儲存和訪問。

關聯容器:元素主要是靠關鍵字來儲存和訪問。

關聯容器和順序容器的很多行為是一樣的,不同之處反映了關鍵字的作用。

關聯容器支援高效的關鍵字查詢和操作。兩個主要的關聯容器為:map和set。

map:被定義為一對數值(pair()),其中key通常是字串,作為索引;另乙個數值是value。字典就是map的一種典型應用。如果想編寫乙個統計某個文字在一篇文章中出現的次數,則可以建立乙份map,其中key設為待統計的字串,value作為該字元出現的次數。

#include

#include

mapmap_word

輸入key/value值最簡單的方法是:

map_word['theword'] = 1
對於字數的統計我們可以使用如下**:

string strinput

while(cin>>strinput)

map_word[strinput]++

其中表示式map_word[strinput]會取出與strinput相對應的value值,如果strinput不在map中則會將該值新增到map中,並置為1.

由於關聯容器並沒有下標的概念,所以如果想對關聯容器進行遍歷,則使用其迭代器進行,如下:

map

::iterator it;

it = map_word:began()

for(;it!=map_word:end();it++)

cout

當我們想查詢某個key是否在map中時,我們最長用如下方法:

第1種方法:

if(!map['thekey'])

//thekey並不存在與該map中。

使用這種方法有乙個非常的大的缺點就是當map中沒有這個key時,會將該鍵加入到map中,而其對應的value中會被設定為預設值0;

第2種方法:使用map的find()函式,我們將要查詢的key傳入並呼叫

map::iterator it;

if(it::end()!=map_word.find('thekey'))

nvalue = it->second;

第3中方法:

int nvalue=0;

string theword;

if(map_word.count(theword))//相應的key存在

nvalue = map_word[theword]

set:是由一群key組成的,沒有對應的value值。如果我們想知道某個值是否在集合中,就可以使用set。例如,我們在寫一篇文章時,可能不想使用某些字元,此時我們就可以把不想使用的文字摘出來,使用set儲存這些字元,在向map中新增字元時,先查詢該字元是否在set中,元素型別為string。

#include

#include

#include

string theword;

setset;

先檢查該字串是否存在於該set中

while(cin>>theword)

在以上**中,如果輸入的字元包含在set中,則執行continue跳出當前迭代,否則執行else語句,將該key值新增至map中,對於任何key值set只保留乙份(當然map也一樣),如果想保留多份請使用multiset和multimap。

map和set在進行新增元素時就已經對內部元素進行了排序,從大到小的順序。

int test[10] = 

vector

vec(test, test+10)

set iset(vec.began(), vec.end())

此時iset的元素將是

如果想為set新增元素可以使用insert函式

iset,insert(vec.began(), vec.end())

//新增某一範圍的元素值

iset.insert(19)//新增單一元素

在set上進行迭代和其他容器一樣的使用方式:

set

::iterator it;

for(;it!=iset.end();it++)

cout

<<*it<

c 關聯容器

1.map建構函式 mapm 普通初始化 mapm m2 複製初始化法 mapm b,e 另乙個map物件的迭代器初始化法 注意 1 鍵值型別必須定義 操作符號,資料訪問時需要呼叫。2 m aaa 下表訪問方式導致的結果是,若鍵對應的值不存在,則插入該鍵值對應的預設值。2.map插入操作 m.ins...

C 關聯容器

1.關聯容器是通過關鍵字來儲存和訪問資料的。關聯容器分為兩大類 map和set。其中,map是通過鍵值對來操作的,這裡的鍵就是關鍵字,值就是對應的資料。例如 mapm 定義了乙個空的map變數m,它的關鍵字型別是int,關鍵字對應的值的型別是int。可以將map理解成為函式,關鍵字是自變數,關鍵字對...

C 關聯容器

1 關聯容器定義 關聯容器和順序容器的本質差別在於 關聯容器通過鍵 key 儲存和讀取元素,而順序容器 則通過元素在容器中的位置順序儲存和訪問元素。關聯容器 associative containers 支援通過鍵來高效地查詢和讀取元素。兩個基本的關聯容器型別是 map set。map 的元素以鍵 ...