c++ 中map的使用

1. map的定义

map<typenam1,typename2> mp;

2. map容器内元素的访问
  • 通过下标访问,map中的键是唯一的
//通过下标访问时需要先检查key是否存在,不检查的话会在map中添加(key,value),其中value是默认值,然后返回value   //检查key存在否可以用find(key)或者mp.count(key)。find(key),key存在时返回迭代器,迭代器等于end()时表示不存在;mp.count(key),存在时返回1,否则返回0
mp['c']=2;
printf("%d",mp['c']);
  • 通过迭代器访问
        //it->first来访问key,it->second来访问value;
        for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++)  
3. map常用函数
  1. find(key)返回key的映射的迭代器

  2. erase()可以删除单个或一个区间的所有元素

    • 删除单个元素有两种方法
      • mp.erase(it) 通过迭代器删除
      • mp.erase(key) 通过key删除
    • 删除一个区间的所有元素
      mp.erase(begin,end),begin为所删除区间的开始迭代器,end为区间末尾的下一个地址
  3. size() 获得map中映射的个数

  4. clear() 清空map中所有元素

  5. empty() 判断map是否为空

4. map中添加数据
   map<int ,string> maplive;  
   maplive.insert(pair<int,string>(102,"aclive"));
   maplive.insert(map<int,string>::value_type(321,"hai"));
   maplive[112]="April";//map中最简单最常用的插入添加!
5. map中的排序问题

map中默认是以key的升序排列,所以不能对map使用sort函数,如果需要排序则先放进vector中再排序。

bool cmp(const pair<string, int>& a, const pair<string, int>& b) {
      return a.second < b.second;
}

int main()
{
  //1、map这里指定less作为其默认比较函数(对象),就是默认按键值升序排列
  map<string, int> name_score_map;
  name_score_map["LiMin"] = 90;
  name_score_map["ZiLinMi"] = 79;
  name_score_map["BoB"] = 92;
  name_score_map.insert(make_pair("Bing", 99));
  name_score_map.insert(make_pair("Albert", 86));

  // 将map中的内容转存到vector中
  vector<pair<string, int>> vec(name_score_map.begin(), name_score_map.end());
  //对线性的vector进行排序
  sort(vec.begin(), vec.end(), cmp);
  for (int i = 0; i < vec.size(); ++i)
      cout << vec[i].first << endl;

  system("pause");

  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值