11 3關聯容器操作

2021-07-12 04:42:08 字數 3623 閱讀 3432

::value_type v1; //這個v1是string型別

set::key_type v2; //這個v2是string型別

map::value_type v3; //v3是pair型別pair

map::key_type v4; //v4是string型別

map

#include

#include

#include

using

namespace

std;

int main()

乙個map是的value_type是乙個pair,我們可以改變pair的值,但不能改變關鍵字成員的值。

#include

#include

#include

using

namespace

std;

int main()

; for (set

::iterator set_it = iset.begin();

set_it != iset.end();++set_it)

cout

<< endl;

return

0;}

#include

#include

#include

using

namespace

std;

int main()

return

0;}

vector

ivec=; //ivec有8個元素

set set2; //空集合

set2.insert(ivec.cbegin(), ivec.cend()); //set2有4個元素

set2.insert(); //現在set2有8個元素

//向word_count插入word的4種方法  

pair的first成員是乙個迭代器,指向具有給定關鍵字的元素;second成員是乙個bool值,指出元素是插入成功還是已經存放在於容器中。

#include

#include

#include

using

namespace

std;

int main()

); if (!ret.second)

}for (const

auto &w : word_count)//將map中的每個元素

//列印結果

cout

<< w.first << "出現了"

<< w.second << "次"

<< endl;

return

0;}

ret儲存insert返回的值,是乙個pair。

ret.first是pair的第乙個成員,是乙個map迭代器,指向具有給定關鍵字的元素。

ret.first->解引用此迭代器,提取map中的元素,元素也是乙個pair。

ret.first->second map中元素的值部分。

++ret.first->second遞增此值。

multimap

authors;

//插入第乙個元素,關鍵字為barth, john

authors.insert();

//正確:新增第二個元素,關鍵字也是barth, john

<< endl << "multimap裡有"

<< ma.size() << "個資料."

<< endl;

multimap

::const_iterator im;

for (im = ma.begin(); im != ma.end();++im)

cout

<< "multimap裡有"

<< ma.count(1000) << "個1000."

<< endl;

if (ma.erase(-1) > 0)

cout

<< "刪除-1成功"

<< endl;

multimap

::iterator iter = ma.find(45);

if (iter!=ma.end())

ma.erase(ma.lower_bound(1000), ma.upper_bound(1000));

return

0;}

map和unordered_map容器提供了下標運算符合乙個對應的at函式。

對於乙個map使用下標操作,其行為與陣列或vector上的下標操作很不相同。

使用乙個不在容器中的關鍵字作為下標,會新增乙個此關鍵字的元素到map中。

set型別不支援下標。

與vector和string不同,map下標運算子返回的型別與解引用map迭代器得到的型別不同。

set

iset=;

iset.find(1); //返回乙個迭代器,指向key==1的元素

iset.find(11); //返回乙個迭代器,值指向iset.end()

iset.count(1); //返回1

iset.count(11); //返回0

STL系列 關聯容器的操作

在c 中定義了幾種型別用來表示容器關鍵字和值的型別。對於set,由於儲存的值就是關鍵字,所以,key type和value type是一樣的。set的迭代器是const的!對於set,find呼叫返回的是乙個迭代器,如果我們所給定的關鍵字在set中的時候,迭代器就指向該關鍵字,否則,find返回尾後...

容器 順序容器 關聯容器

容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...

C Primer 學習筆記 關聯容器的操作

pair型別 定義在 utility標頭檔案中 pair是乙個用來生成特定型別的模板,類中儲存2個相關的成員變數 map中每個元素就是乙個pair物件 pairp v1,v2 v1是first,v2是second p.first p.second建構函式 pair 建立 pair 類的未初始化的新例...