1. 程式人生 > >【C++】 map的基礎知識

【C++】 map的基礎知識

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()    //判斷是否為空