map映照容器

  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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值