经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C » 查看文章
c/c++ 标准库 map set 插入
来源:cnblogs  作者:小石王  时间:2018/9/25 20:39:26  对本文有异议

标准库 map set 插入

一,插入操作

有map如下:

  1. map<string, size_t> cnt;

插入方法:

插入操作种类 功能描述
cnt.insert({"abc", 12}); 直接用大括号
cnt.insert(make_pari("abc", 22)); 用make_pair函数,返回一个pair
cnt.insert(pair<string, size_t>("abc", 22)); 直接构造pair
cnt.insert(map<string, size_t>::value_type("abc",31)); 有map的value_type

插入注意:map,set没有重复的key,所以插入重复key的pair时,实际是没有插入进去的。

  1. map<int, int> mp{{1,2},{2,3}};
  2. mp.insert({1,3});//{1,3}的key和{1,2}重复了,所以mp还是原来的:{1,2},{2,3}

二,map和multimap的插入单一值的返回值

类型 功能描述
map 返回一个pair。first是迭代器,second是bool,插入成功second为true
multimap 返回一个迭代器

小例子索引

代码块 功能描述
test1 4种插入方式
test2 map insert的返回值
test3 multimap insert的返回值

小例子:

  1. #include <iostream>
  2. #include <set>
  3. #include <map>
  4. #include <vector>
  5. using namespace std;
  6. int main(){
  7. //test1 4种插入方式
  8. /*
  9. map<int, int> mp{{1,2},{2,3}};
  10. //方式1
  11. mp.insert({1,3});//insert不成功,因为key1已经存在
  12. //方式2
  13. mp.insert(make_pair(3,4));
  14. //方式3
  15. mp.insert(pair<int,int>(4,1));
  16. //方式4
  17. mp.insert(map<int,int>::value_type(5,1));
  18. for(auto &s : mp){
  19. cout << s.first << "," << s.second << endl;
  20. }
  21. */
  22. //test2 map insert的返回值
  23. /*
  24. map<string, size_t> cnt;
  25. string wd;
  26. while(cin >> wd){
  27. //map和setinsert的返回值类型如下,用auto也可以
  28. pair<map<string, size_t>::iterator, bool> ret =
  29. cnt.insert({wd, 1});
  30. //auto ret = cnt.insert({wd, 1});
  31. if(!ret.second){
  32. ++ret.first->second;
  33. }
  34. }
  35. for(auto &s : cnt){
  36. cout << s.first << ":" << s.second << endl;
  37. }
  38. */
  39. //test3 multimap insert的返回值
  40. multimap<string, size_t> aus;
  41. aus.insert({"aaa", 1});
  42. //multi的返回值类型如下
  43. map<string, size_t>::iterator ret = aus.insert({"aaa", 2});
  44. cout << ret->first << ":" << ret->second << endl;
  45. }

github完整代码

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号