天天看點

#include<map>簡介

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
           
#include&lt;map&gt;簡介

繼續閱讀