STL十大容器 之 對映 map

2021-09-27 06:22:40 字數 2075 閱讀 5641

1、map的儲存其實是有序二叉樹(紅黑樹)

2、儲存鍵值對 :例項化時需要傳遞兩個型別 : 乙個鍵key的型別 ,另乙個是值value型別;

3、key唯一,相同的key只會存在一條記錄;

4、key有序,插入指定位置 , 遍歷時有序

(1)插入

pairinsert( const pair&val );

pair(key,value); 建立乙個鍵值對 物件 pair

有兩個屬性 first second

訪問first 訪問到的是key的值

訪問second 訪問到的是value的值

pairp(「張三」,111);

p.first === 「張三」;

p.second === 111

make_pair(key,value);通過key和value建立乙個鍵值對 物件

insert(pair(key,value);

insert(make_pair(key,value);

map[key] = value;

insert 插入時 如果key重複則插入失敗

insert返回的是乙個pair對

第二個引數true表示插入成功或者false失敗

第乙個引數插入成功時指向該記錄的迭代器

如果key不存在則新增 如果存在則更新value

(2)迭代器

begin() end() rbegin() rend()

map迭代器所指向的資料是一條 key-value 的記錄

(3) size()

map中元素的個數 鍵值對的個數

(4) empty()

判斷是否為空;

(5) swap()

交換;(6) size_type count( const key_type &key );

返回map中鍵值等於key的元素的個數

(7) erase()

void erase( iterator pos );

void erase( iterator start, iterator end );

size_type erase( const key_type &key );

(8) find()

iterator find( const key_type &key );

find()函式返回乙個迭代器指向鍵值為key的元素,如果沒找到就返回指向map尾部的迭代器。

#include #include using namespace std;

int main()

cout << endl;

pairp("王五",111);

cout << p.first << endl;

cout << p.second << endl;

cout << m.count("趙六") << endl;

cout << m.count("錢七") << endl;

cout << m.erase("張三") << endl;

cout << m.erase("七七") << endl;

it = m.find("張三");

if(it != m.end())else

typedef mapmsi;

typedef msi::iterator msit;

pairpf;

pair::iterator,bool> pp = m.insert(make_pair("張三",119));

cout << pp.first->first << ":" << pp.first->second << endl;

cout << boolalpha << pp.second << endl;

if(pp.second)else

return 0;

}

存放自定義型別:

#include #include using namespace std;

class stu

friend ostream& operator<<(ostream& os,const stu& s)

STL十大容器 之 堆疊 stack

容器介面卡就是對線性容器的封裝,滿足特定功能需求 底層實現是基於線性容器 而且在例項化的時候可以指定底層實現的線性容器。includeempty 堆疊為空則返回真 pop 移除棧頂元素 push 在棧頂增加元素 size 返回棧中元素數目 top 返回棧頂元素 template con為容器介面卡的...

STL系列之map 對映

include using namespace std 使用命名空間,以便省略變數std map的寫法mapmapnew key 和value可以是任意需要的資料型別。mapnew.insert pair 24,輔導輔導輔導 mapnew.insert map value type 755,dwdw...

STL關聯容器之map

map和set一樣,也是一種關聯容器,內部也是使用紅黑樹作為底層的實現結構。但是不同的是,map的鍵值和實值可以是不一樣的。map與set的查詢操作本質上是一樣的,沒有特殊的地方。map使用鍵值排列元素的位置,因而也不允許插入相同鍵值的元素,插入演算法返回pair iterator,bool 分別指...