1、關聯式容器,key和value每個元素都是對組
2、所有元素根據元素的鍵值自動排序,所有元素都是pair同時擁有實值和鍵值,其中第乙個元素為鍵值,第二個為實值,可以允許 兩個元素的實值相同,不允許鍵值相同,可以通過迭代器改變元素的實值不能改變鍵值
3、map與list擁有相同的某些性質,在進行元素的新增insert和刪除erase操作時,操作之前的所有迭代器在操作完成之後依然有效(被刪除元素的迭代器除外)
4、map與multimap操作類似,除multimap鍵值可以重複
5、map與multimap都是紅黑樹為底層實現機制
6、插入 四種方式
6.1 m.insert(pair(1, 10));
6.2 m.insert(make_pair (2, 20));
6.3 m.insert(map::value_type(3, 30));
6.4 m[4] = 40;
7、刪除 m.erase(3)按照key鍵值刪除對應的元素
8、查詢 find 通過key值查詢對應的元素
map::iterator pos = m.find(3);
9、lower_bound(keyelem) 返回第乙個key>=keyelem元素的迭代器
upper_bound(keyelem)返回第乙個key>keyelem元素的迭代器
equal_range(keyelem) 返回容器中key與keyelem相等的上下限的兩個迭代器
10、改變map容器的排序規則
11、api介面測試
#include "pch.h"
#include #include//map與multimap
using namespace std;
void test01()
//cout<::iterator it="m.begin();" m.end>
*/}void test02()
*/ //查詢
//通過key值查詢對應的元素
map::iterator pos = m.find(3);
if (pos != m.end())
//統計
//通過key值查詢對應的元素
int num = m.count(4);
cout << "key為4的元素個數為: " << num << endl;
//lower_bound(keyelem) 返回第乙個key>=keyelem元素的迭代器
map::iterator ret = m.lower_bound(3);
if (ret != m.end())
else
//upper_bound(keyelem)返回第乙個key>keyelem元素的迭代器
map::iterator ret2 = m.upper_bound(3);
if (ret2 != m.end())
else
//equal_range(keyelem) 返回容器中key與keyelem相等的上下限的兩個迭代器
pair < map::iterator, map::iterator > it2= m.equal_range(3);
if (it2.first != m.end()) };
void test03()
}int main()
12、案例
//建立部門
enum department ;
class staff
};void showstaff(const staff&s)
/*void printstaff1(const multimap&s)
}void printstaff2(const multimap&s)
}void printstaff3(const multimap&s)
}void printstaff_all(const multimap&s)
}*///講解分部門顯示實現 用find找到部門起始人員 用count統計部門人數
void showstaff(multimap&m)
cout << "finacial_depatment:" << endl;
multimap::iterator it1 = m.find(finacial_depatment);
for (unsigned int index = 0; it1 != m.end(), index < m.count(finacial_depatment); it1++, index++)
cout << "develop_depatment:" << endl;
multimap::iterator it2 = m.find(develop_depatment);
for (unsigned int index = 0; it2 != m.end(), index < m.count(develop_depatment); it2++, index++)
cout << "all_depatmen: " << endl;
for (multimap::const_iterator it3 = m.begin(); it3 != m.end(); it++) }
int main()
STL容器類map學習
map類定義了乙個關聯容器,並且在容器中使用唯一的關鍵字 任何兩個元素的鍵都不相同 來對映相應的值。從本質上來說,關鍵字就是值的名字。在map物件中儲存了乙個值之後,就可以通過關鍵字來獲得它。map物件是一系列關鍵字 值的匹配對。map的主要功能在於 只有你知道了乙個值的關鍵字,就能夠找到這個值。例...
C 學習筆記 STL常用容器 set和map
set 所有元素在插入時自動排序,底層結構用二叉樹實現。set和multiset的區別 set不允許容器中有重複的元素,multiset允許容器中有重複的元素。set構造和賦值 構造 預設建構函式 setst 拷貝建構函式 set const set st 賦值 過載等號操作符 set operat...
STL學習2常用容器2 7set multiset
一 set容器 1 關聯式容器,內部插入資料時候自動排序,不允許插入重複的key值 2 set multiset容器不可以通過迭代器修改裡面的元素,因為預設有了排序規則,其底層實現是紅黑樹,紅黑樹是平衡二叉樹的一種 3 樹的簡單知識 3.1二叉樹 任何節點最多隻允許有兩個子節點,分別為左子節點和右子...