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 的元素以鍵 ...