所有元素都會根據元素的鍵值自動排序。map所有的元素都是pair,同時擁有實值和鍵值,pair的第一元素被視為鍵值,第二元素被視為實值,map不允許兩個元素有相同的鍵值。
map的鍵值關係到map元素的排列規則,任意改變map鍵值將會嚴重破壞map組織。如果想要修改元素的實值,那麼是可以的。
map和list擁有相同的某些性質,當對它的容器元素進行新增操作或者刪除操作時,操作之前的所有迭代器,在操作完成之後依然有效,當然被刪除的那個元素的迭代器必然是個例外。
multimap和map的操作類似,唯一區別multimap鍵值可重複。
map和multimap都是以紅黑樹為底層實現機制。
api意義
建構函式
mapmaptt
map預設建構函式
map(const map &mp)
拷貝建構函式
賦值操作
map& operator=(const map &mp)
過載等號操作符
swap(mp)
交換兩個集合容器
大小操作
size()
返回容器中元素的數目
empty()
判斷容器是否為空
插入資料元素操作
map.insert(...); //往容器插入元素,返回pair
mapmapstu;
往容器插入元素,返回pairmapmapstu;
第一種 通過pair的方式插入物件
mapstu.insert(pair(3, "小張"));
第二種 通過pair的方式插入物件
mapstu.inset(make_pair(-1, "校長"))
第三種 通過value_type的方式插入物件
mapstu.insert(map::value_type(1, "小李"))
第四種 通過陣列的方式插入值
mapstu[3] = "小劉";mapstu[5] = "小王";
刪除操作
clear()
刪除所有元素
erase(pos)
刪除pos迭代器所指的元素,返回下乙個元素的迭代器
erase(beg,end)
刪除區間[beg,end)的所有元素 ,返回下乙個元素的迭代器
erase(keyelem)
刪除容器中key為keyelem的對組
查詢操作
find(key)
查詢鍵key是否存在,若存在,返回該鍵的元素的迭代器;/若不存在,返回map.end()
count(keyelem)
返回容器中key為keyelem的對組個數。對map來說,要麼是0,要麼是1。對multimap
來說,值可能大於1
lower_bound(keyelem)
返回第乙個key>=keyelem元素的迭代器
upper_bound(keyelem)
返回第乙個key>keyelem元素的迭代器
equal_range(keyelem)
返回容器中key與keyelem相等的上下限的兩個迭代器
1 #include 2 #include3 #include 45using
namespace
std;67
void
test01()
1819
if(m.empty())
2023
else
2427}28
29void
test02()
4142 map::iterator pos = m.find(2); //
查詢43
if (pos !=m.end())
4447
else
4851
52int num = m.count(3); //
map的count 要麼0 要麼1
53 cout << "
num =
"<< num <5455
//lower_bound(keyelem);
//返回第乙個key>=keyelem元素的迭代器。
5657 map::iterator ret = m.lower_bound(3
);58
if (ret !=m.end())
5962
else
6366
67//
upper_bound(keyelem);
//返回第乙個key>keyelem元素的迭代器。
68 ret = m.upper_bound(3
);69
if (ret !=m.end())
7073
else
7477
78//
equal_range(keyelem);
//返回容器中key與keyelem相等的上下限的兩個迭代器。
7980 pairint, int>::iterator, map::iterator> ret2 = m.equal_range(3
);81
82if (ret2.first !=m.end())
8386
else
8790
91if (ret2.second !=m.end())
9295
else
9699
}100
bool mycompare(int &v1, int &v2)
103104
intmain()
STL之map容器和multimap容器
所有元素都會根據元素的鍵值自動排序。map所有的元素都是pair,同時擁有實值和鍵值,pair的第一元素被視為鍵值,第二元素被視為實值,map不允許兩個元素有相同的鍵值。map的鍵值關係到map元素的排列規則,任意改變map鍵值將會嚴重破壞map組織。如果想要修改元素的實值,那麼是可以的。map和l...
STL關聯容器之map
map和set一樣,也是一種關聯容器,內部也是使用紅黑樹作為底層的實現結構。但是不同的是,map的鍵值和實值可以是不一樣的。map與set的查詢操作本質上是一樣的,沒有特殊的地方。map使用鍵值排列元素的位置,因而也不允許插入相同鍵值的元素,插入演算法返回pair iterator,bool 分別指...
STL容器類map學習
map類定義了乙個關聯容器,並且在容器中使用唯一的關鍵字 任何兩個元素的鍵都不相同 來對映相應的值。從本質上來說,關鍵字就是值的名字。在map物件中儲存了乙個值之後,就可以通過關鍵字來獲得它。map物件是一系列關鍵字 值的匹配對。map的主要功能在於 只有你知道了乙個值的關鍵字,就能夠找到這個值。例...