【C++】 map的基礎知識
阿新 • • 發佈:2018-11-08
1.定義
map是一個容器,容器中存在兩個值,key和value。
key只能出現一次,而value可以重複。
2.性質
-
關聯性:關聯容器中的元素的參考地址指的是其 Key 值,而不是他們在容器中的絕對地址;
-
有序性:容器中的元素一直按照排序方式嚴格排序,所有插入元素都按照該順序排列;
-
對映:每個元素中,一個 Key 值與一個對映值相關。Key 值是用來標識其主要內容是對映值的元素;
-
唯一 Key 值:容器中不存在同時擁有相同 Key 值的兩個元素;
-
分配感知 (Allocator-aware):map 容器使用分配器物件動態處理其儲存需求。
2.基本操作
(1)宣告
map<int,string>m1;//直接
m1[1]="hello";
m1[2]=" ";
m1[3]="world";
m1[4]="!";
map<int,string>m2(m1);//複製
map<int,string>m3(m1.begin(),m1.end());//利用指標
(2)插入
map<int,string>m1;
m1[1]="hello";
m1[2]=" ";
m1[3]="world";
m1[4]="!";
//insert
m1. insert(pair<int,string>(8,"over"));//pair
m1.insert(map<int,string>::value_type(0,"zero"));//map
m1.insert(make_pair<int,string>(8,"good")); //make_pair
//陣列用法
m1[5]="game";
(3)修改
//陣列
int i =m1["a"];
m1["a"]=i;
//迭代器
map<int,string>::iterator it;
it.find("b");
int j=it->second;
it->second=j;
(4)刪除
map<int,string>m1;
m1[1]="hello";
m1[2]=" ";
m1[3]="world";
m1[4]="!";
m1[7]="make";
map<int,string>::iterator it;//利用迭代器
it=m1.find(4);
m1.erase(it);
m1.erase(m1.begin(),m1.end());//erase
m1.clear();//清空
(5)遍歷
map<int,string>::iterator it;
it = m1.begin();
for (it; it != m1.end(); it++)
{
//用 first 訪問std::pair的第一個成員(Type1),second 訪問第二個成員 (Type2)
cout<<it->first<<":"<<it->second<<endl;
}
(6)其他
my_Map.size() //返回元素數目
my_Map.empty() //判斷是否為空