map映照容器由一个键值和一个映照数据组成,一一照应,不允许重复,比较函数只对元素键值进行比较
map元素插入以及遍历访问
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc,char* argv[])
{
map<string,float> m;
m["Jack"]=98.5;
m["Bomi"]=96.0;//输出时会变成96
m["Kate"]=97.5;
map<string,float>::iterator it;//按键值从小到大排序
for(it=m.begin();it!=m.end();it++)
{
cout<<(*it).first<<" : "<<(*it).second<<endl;
}
return 0;
}
map删除元素:
erase和clear,erase()删除的数据,()内输入[ ]内的东西
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc,char* argv[])
{
map<string,float> m;
m["Jack"]=98.5;
m["Bomi"]=96.0;//输出时会变成96
m["Kate"]=97.5;
m.erase("Kate");
map<string,float>::iterator it;//按键值从小到大排序
for(it=m.begin();it!=m.end();it++)
{
cout<<(*it).first<<" : "<<(*it).second<<endl;
}
return 0;
}
元素反向遍历:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc,char* argv[])
{
map<string,float> m;
m["Jack"]=98.5;
m["Bomi"]=96.0;//输出时会变成96
m["Kate"]=97.5;
map<string,float>::reverse_iterator rit;//按键值从小到大排序
for(rit=m.rbegin();rit!=m.rend();rit++)
{
cout<<(*rit).first<<" : "<<(*rit).second<<endl;
}
return 0;
}
元素查找:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc,char* argv[])
{
map<string,float> m;
m["Jack"]=98.5;
m["Bomi"]=96.0;//输出时会变成96
m["Kate"]=97.5;
map<string,float>::iterator it;
it=m.find("Kate");//查找
if(it!=m.end())
{
cout<<(*it).first<<" : "<<(*it).second<<endl;
}
else
{
cout<<"not find"<<endl;
}
return 0;
}
利用map实现数字分离
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc,char* argv[])
{
map<char,int> m;
for(int j=0;j<10;j++)
{
m['0'+j]=j;
}
string sa,sb;
sa="6234";
int i,sum=0;
for(i=0;i<sa.length();i++)//算出各个位之和
{
sum+=m[sa[i]];
}
cout<<"sum = "<<sum<<endl;
return 0;
}