博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
map的基本操作
阅读量:5045 次
发布时间:2019-06-12

本文共 3308 字,大约阅读时间需要 11 分钟。

 

向map添加元素:

因为map是不允许出现重复关键字的,所以如果重复插入键相同的元素后面的元素是不会插入成功的,下面是一个验证程序:

#include
#include
#include
#include
using namespace std;int main(){ map
mmap; mmap.insert({ "wu",1 }); mmap.insert({ "xiao",1}); mmap.insert({ "wu",2 }); mmap.insert({ "xiao",8 }); for (auto it : mmap) { cout << it.first << " " << it.second << endl; } return 0;}

  运行结果:

从运行结果我们可以知道,mmap的第三条个第四条插入语句时没法插入成功的,因为前面已经对相同键值做过了插入操作,后面就不会再插入了。

如果想要四条语句都插入成功可以考虑用multimap,multimap是可以存在重复键值的,下面是验证程序

#include
#include
#include
#include
using namespace std;int main(){ multimap
mmap; mmap.insert({ "wu",1 }); mmap.insert({ "xiao",1}); mmap.insert({ "wu",2 }); mmap.insert({ "xiao",8 }); for (auto it : mmap) { cout << it.first << " " << it.second << endl; } return 0;}

  运行结果:

 map容器最常用的方法——kv对计数,如果插入的元素还没存在就插入,并给value赋值为1,如果插入的元素已经存在就不再插入而是给对应的键的值加1

#include
#include
#include
#include
using namespace std;int main(){ map
mmap; string str; while (cin >> str) { mmap[str]++; } for (auto it : mmap) { cout << it.first << " " << it.second << endl; } return 0;}

  运行结果:

 

 

map的各种插入数据方式:

#include 
#include
#include
#include
using namespace std;int main(){ map
mmap; mmap.insert(pair
("fsdfads", 43));//第一种插入方式 mmap.insert(map
::value_type("fsdf", 5));//第二种 mmap["fsdff"] = 3;//第三种 mmap.insert({ "fsd",4 });//第四种 for (auto it : mmap) { cout << it.first << " " << it.second << endl; } return 0;}

  运行结果:

 

对map中的value进行排序
#include 
#include
#include
#include
#include
using namespace std;int main(){ map
mmap; vector
>vec; mmap.insert(pair
("fsdfads", 43)); mmap.insert(map
::value_type("fsdf", 5)); mmap["fsdff"] = 3; mmap.insert({ "fsd",4 }); //将map的key和value以pair的形式装到vector中,对vector进行排序。 for (auto it = mmap.begin(); it != mmap.end(); it++) { vec.push_back(make_pair(it->first, it->second)); } sort(vec.begin(), vec.end(), [](const pair
&x, const pair
&y) {return x.second < y.second; }); for (auto it : vec) { cout << it.first << " " << it.second << endl; } return 0;}

  运行结果:

#include 
#include
#include
#include
#include
#include
using namespace std;int cmp(const pair
& x, const pair
& y){ return x.second > y.second;}void sortMapByValue(map
& tMap, vector
>& tVector){ for (map
::iterator curr = tMap.begin(); curr != tMap.end(); curr++) tVector.push_back(make_pair(curr->first, curr->second)); sort(tVector.begin(), tVector.end(), cmp);}int main(){ map
tMap; string word; while (cin >> word) { pair
::iterator, bool> ret = tMap.insert(make_pair(word, 1)); if (!ret.second) ++ret.first->second; } vector
> tVector; sortMapByValue(tMap, tVector); for (int i = 0; i < tVector.size(); i++) cout << tVector[i].first << ": " << tVector[i].second << endl; system("pause"); return 0;}

  

转载于:https://www.cnblogs.com/wuyepeng/p/9906063.html

你可能感兴趣的文章
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>
1.jstl c 标签实现判断功能
查看>>
Linux 常用命令——cat, tac, nl, more, less, head, tail, od
查看>>
超详细的Guava RateLimiter限流原理解析
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>
Swift - RotateView
查看>>
iOS设计模式 - 中介者
查看>>
centos jdk 下载
查看>>
HDU 1028 Ignatius and the Princess III(母函数)
查看>>
(转)面向对象最核心的机制——动态绑定(多态)
查看>>
token简单的使用流程。
查看>>