STL學習筆記 map multimap容器

2021-07-06 01:54:13 字數 2090 閱讀 4338

簡介:

map是標準的關聯式容器,乙個map是乙個鍵值對的序列,即(key,value)。提供基於key的快速檢索能力

map中key的值是唯一的。map中的元素按照一定的順序排列,元素插入是按照排序規則插入的,不能指定位置插入

map的具體實現是紅黑樹變體的平衡二叉樹資料結構。插入和刪除比vector快

map可直接取key對應的value,如map[key] = value

multimap和map區別在於:map中同乙個key只能出現一次,而multimap中相同鍵可以出現多次,但是multimap不支援操作

標頭檔案:

#include

map/multimap的預設構造:

mapmaptt;

multimapmultimaptt;

map的插入和迭代器:

mapmap1;

//四種插入方式

map1.insert(pair(1, "sudent1"));

map1.insert(make_pair(2, "student2"));

map1.insert(map::value_type(3, "student3"));

map1[4] = "stident4";

//遍歷

for(map::iterator it = map1.begin(); it != map1.end(); it++)

//刪除元素

while(!map1.empty())

//四種插入方法的區別:

//前三種直接用insert的方法返回的都是pair, 第乙個是插入元素對應的迭代器的位置

pair::iterator, bool> pair1 = map1.insert(make_pair(2, "student22"));

if(pair1.second == true)  

cout << "insert success." << endl;

else

cout << "insert falied." << endl; //此時會列印出錯誤資訊,插入失敗

//第四種插入方法會覆蓋已經存在的鍵值對

map1[4] = "stident44"; 

map的查詢和異常處理:

map.fine(key); // 若找到,返回迭代器,否則返回map.end()

map.count(key); //返回map中改鍵為key的對組的個數,對map要麼是0或者1,multimap可能大於1

//map也支援lower_bound upper_bound equal_range等操作,和set一樣

pair(map::iterator, map::iterator) mypair = map1.equal_range(5);

//第乙個是》=5的位置 第二個是》5的位置

if(mypair.first != map1.end())

if(mypair.second!= map1.end())

multimap案例:

//multimap最大的特點就是乙個key對應多個value ----> 可以用來對資料進行分組

// 乙個公司有多個部門: sale 2人  development 1人  financial 2人

//人員資訊有: 姓名 ** 工資

//通過multimap進行資訊的插入 儲存 顯示 可以分部門顯示員工的資訊

class person }

void main()

//計數

int num = map1.count("financial");

cout<<"financial person counts:"<

//找指定鍵的所有值

map::iterator it2 = map1.find("financial");

int tag = 0;

while(it2 != map1.end() && tag < num) }

STL學習2常用容器2 8map multimap

1 關聯式容器,key和value每個元素都是對組 2 所有元素根據元素的鍵值自動排序,所有元素都是pair同時擁有實值和鍵值,其中第乙個元素為鍵值,第二個為實值,可以允許 兩個元素的實值相同,不允許鍵值相同,可以通過迭代器改變元素的實值不能改變鍵值 3 map與list擁有相同的某些性質,在進行元...

STL學習筆記

1.stl六大元件 1 容器 各種資料結構,如vector,list,deque,set,map,用來存放資料,從實現的角度看,stl容器是一種class template。2 演算法 各種常用的演算法如sort,search,copy,erase.從實現的角度看,stl演算法是一種function...

STL學習筆記

容器是用來存放資料的,掌握容器特性才能更好地選擇合適的容器載資料。這裡要記住,可自主選擇插入的位置 vectors 可隨機訪問,可變長陣列,可快速在尾部插入刪除,不適合在中部頭部頻繁插入刪除 deques 可隨機訪問,佇列,先進先出,可快速在頭部尾部插入刪除,同樣不適合在中部插入刪除元素 list ...