C++中map提供的是一种键值对容器,里面的数据都是成对出现的<key,value>,每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。
map的基本操作函数:
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
erase() 删除一个元素
find() 查找一个元素
insert() 插入元素
key_comp() 返回比较元素key的函数
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
map添加数据:
map<int ,string> m;
m.insert(pair<int,string>(321,"aaa"));
m.insert(map<int,string>::value_type(321,"aa"));
m[123]="aaa";//map中最简单最常用的插入添加!
map中元素的查找:
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
map<int ,string >::iterator it;
it=m.find(11);
if(it==m.end())
cout<<"we do not find 11"<<endl;
else cout<<"wo find 11"<<endl;
map中元素的删除:
//如果删除11;
map<int ,string >::iterator it;;
it=m.find(11);
if(it==m.end())
cout<<"we do not find 11"<<endl;
else m.erase(it); //delete 11;
map的sort排序:
map中的元素是自动按key升序排序,所以不能对map用sort函数:
#include <map>
#include <iostream>
using namespace std;
int main( )
{
map <int, int> m1;
map <int, int>::iterator it;
m1.insert ( pair <int, int> ( 1, 20 ) );
m1.insert ( pair <int, int> ( 4, 40 ) );
m1.insert ( pair <int, int> ( 3, 60 ) );
m1.insert ( pair <int, int> ( 2, 50 ) );
m1.insert ( pair <int, int> ( 6, 40 ) );
m1.insert ( pair <int, int> ( 7, 30 ) );
for ( it = m1.begin( ); it != m1.end( ); it++ )
cout << it->first<<" "<<it->second<<endl;
}
//1 20
//2 50
//3 60
//4 40
//6 40
//7 30
问题链接:HDU1228 A + B
#include <iostream>
#include <map>
#include <string>
using namespace std;
//ac map
int main()
{
int a,b;
string s;
map<string,int> m;
m["zero"] = 0;
m["one"] = 1;
m["two"] = 2;
m["three"] = 3;
m["four"] = 4;
m["five"] = 5;
m["six"] = 6;
m["seven"] = 7;
m["eight"] = 8;
m["nine"] = 9;
m["+"] = 100;
m["="] = 200;
while(true)
{
a=0;
while(cin>>s)
{
if(m[s]==100)
{
break;
}
a=a*10+m[s];
}
b = 0;
while(cin >> s)
{
if(m[s]==200)
{
break;
}
b=b*10+m[s];
}
if(a==0&&b==0)
{
break;
}
else
{
cout<<a+b<<endl;
}
}
return 0;
}