map 是一種關聯容器, 提供一對一的關聯, 關聯的形式為: KEY----VALUE(鍵值對),另外關鍵字不能重複。
map 也可看做是 關鍵字映射的集合, 即,map中不可出現重複的關鍵字,每條映射的關鍵字都是不同的。
1.map基本用法
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<string,int> mymap;
map<string,int>::iterator it;
mymap["China"] = 100;
mymap["English"] = 200;
mymap["America"] = 300;
for(it=mymap.begin();it!=mymap.end();++it)
cout<<(*it).first<<":"<<(*it).second<<endl;
return 0;
}
//輸出結果為
America:300
China:100
English:200
//注:預設情況下,鍵值對是按鍵首字母的ascll大小,升序排列
注:以下是關于如何排序map鍵值對
<font color=‘blue’,size=‘5’>map的按Key排序和按Value排序詳解
2.count(x)用于判斷某一鍵是否存在
注:如果mymap的key中有x,則函數傳回1,否則傳回0.
#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;
int main()
{
map<string, int> mymap;
map<string, int>::iterator it;
mymap["China"] = 100;
mymap["English"] = 200;
mymap["America"] = 300;
if (mymap.count("China"))
cout << "exist" << endl;
else
cout << "No exist" << endl;
system("pause");
return 0;
}
//輸出結果為
exist
3.另外還有一些函數
C++ Maps是一種關聯式容器,包含“關鍵字/值”對
begin() 傳回指向map頭部的疊代器
clear() 删除所有元素
count() 傳回指定元素出現的次數
empty() 如果map為空則傳回true
end() 傳回指向map末尾的疊代器
equal_range() 傳回特殊條目的疊代器對
erase() 删除一個元素
find() 查找一個元素
get_allocator() 傳回map的配置器
insert() 插入元素
key_comp() 傳回比較元素key的函數
lower_bound() 傳回鍵值>=給定元素的第一個位置
max_size() 傳回可以容納的最大元素個數
rbegin() 傳回一個指向map尾部的逆向疊代器
rend() 傳回一個指向map頭部的逆向疊代器
size() 傳回map中元素的個數
swap() 交換兩個map
upper_bound() 傳回鍵值>給定元素的第一個位置
value_comp() 傳回比較元素value的函數
4.周遊
#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;
int main()
{
map<string, int> mymap;
map<string, int>::iterator it1;
map<string, int>::reverse_iterator it2;
mymap["China"] = 100;
mymap["English"] = 200;
mymap["America"] = 300;
//正向周遊
for (it1 = mymap.begin(); it1 != mymap.end(); ++it1)
cout << it1->first << ":" << it1->second << endl;
cout << endl<<endl;
//反向周遊
for(it2=mymap.rbegin();it2!=mymap.rend();++it2)
cout << it2->first << ":" << it2->second << endl;
system("pause");
return 0;
}
//輸出結果為
America:300
China:100
English:200
English:200
China:100
America:300