头文件:

#include <map>

map和multimap的唯一区别:map中不可以包含重复键值,而multimap中可以。

构造方法

  1. mType<type1,type2> tmap()                    默认构造方法
  2. mType<type1,type2> tmap(beg,end)     通过迭代器构造

示例:

  1. map<int,string> intmap;
  2. map<string,string > othermap;
  3. multimap<int,string> stringMultiMap;
  4. multimap<string, string > otherStringMultiMap;

注:1,C++中map 用红黑树构造,时间复杂度为log(n)

2,可以用非标准的hash_map代替,其头文件在#include<hash_map>,要权衡时间,空间等合理选择。

操作:

  1. tmap.insert(pair<type1,tpye2>)                                                             添加一个键值对
  2. tmap.insert(map<type1,type2>::value_type(key,value))                   添加 一个map
  3. tmap[key] = value                                                                                     通过索引添加// 若key不存在是添加操作,存在是修改操作
  4. tmap.find(key)                                                                                           查找,返回迭代器,没有找到返回最后一个元素的迭代器
  5. tmap.erase(pos)                                                                                      通过迭代器删除
  6. tmap.clear()                                                                                               删除所有元素

map 和 multimap 用法大致相同,示例代码是map的操作

示例代码:

  1. #include <iostream>
  2. #include <iterator>
  3. #include <string>
  4. #include <map>
  5. using namespace std;
  6. int main() {
  7. map <string,string> stringMap;
  8. // 增加 ------------------------------------------------------------------------------------
  9. stringMap["A"]="Apple"; // 没有找到A,自动添加
  10. stringMap["A"]="Ada";   // 找到A,修改
  11. stringMap.insert(pair<string,string>("B","Boy")); // 插入B
  12. stringMap.insert(pair<string,string>("B","Bad")); // 重复insert 失败
  13. stringMap.insert(map<string,string>::value_type("C","Cat")); // 插入C
  14. stringMap["D"]="Dog";   // 插入D
  15. map<string,string>::iterator stringMapItr;
  16. // 遍历 ------------------------------------------------------------------------------------
  17. // 遍历map中的类容
  18. cout << "stringMap:" << endl;
  19. for (stringMapItr = stringMap.begin();stringMapItr != stringMap.end();stringMapItr ++)
  20. {
  21. cout << "key=" << stringMapItr->first << ",value=" << stringMapItr->second << endl;
  22. }
  23. // 查找 ------------------------------------------------------------------------------------
  24. // 通过索引方式查找 -
  25. // 如果查出成功返回 value,如果查找不成功将会自动插入键值(脏值)
  26. string getValue = stringMap["C"];
  27. cout << "string[\"C\"]=" << getValue << endl;
  28. // 通过迭代器查找 -
  29. // 如果查出成功返回 对应位置迭代器,如果查找不成功返回最后一个元素的下一个迭代器
  30. stringMapItr = stringMap.find("C");
  31. if(stringMapItr != stringMap.end()) {
  32. cout << "\"C\" is find" << endl;
  33. } else {
  34. cout << "\"C\" is not find" << endl;
  35. }
  36. // 删除 ------------------------------------------------------------------------------------
  37. stringMapItr = stringMap.begin();
  38. // 用迭代器擦除
  39. stringMap.erase(stringMapItr);
  40. // 遍历map中的类容
  41. cout << "stringMap earse A:" << endl;
  42. for (stringMapItr = stringMap.begin();stringMapItr != stringMap.end();stringMapItr ++)
  43. {
  44. cout << "key=" << stringMapItr->first << ",value=" << stringMapItr->second << endl;
  45. }
  46. // 删除所有元素
  47. stringMap.clear();
  48. // 遍历map中的类容
  49. cout << "stringMap clear:" << endl;
  50. for (stringMapItr = stringMap.begin();stringMapItr != stringMap.end();stringMapItr ++)
  51. {
  52. cout << "key=" << stringMapItr->first << ",value=" << stringMapItr->second << endl;
  53. }
  54. return 0;
  55. }

运行结果:

stringMap:
key=A,value=Ada
key=B,value=Boy
key=C,value=Cat
key=D,value=Dog
string["C"]=Cat
"C" is find
stringMap earse A:
key=B,value=Boy
key=C,value=Cat
key=D,value=Dog
stringMap clear:

STL 之map,multimap相关推荐

  1. C++ STL容器 —— map/multimap 用法详解

    C++ STL容器 -- map/multimap 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别 ...

  2. C++STL的map/ multimap容器

    3.9.1 map基本概念 简介: map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map ...

  3. map multimapc++_黑马C++视频笔记《STL之map/multimap》

    /* map/multimap容器 * map/multimap属于关联式容器,底层结构是用二叉树实现. * - map中所有元素都是pair: * - pair中第一个元素为key(键值),起到索引 ...

  4. STL容器及其简单应用(stack、priority_queue、vector、deuqe、list、map/multimap、set/multiset)

    目录 前言 [1]stack操作以及应用 stack的几个核心接口 利用stack完成进制转换 [2]priority_queue操作以及应用 priority_queue的几个核心接口 利用prio ...

  5. STL中 map 和 multimap

    1. 所在头文件<map>. 命名空间std, 声明如下: 1 namespace std{ 2 template <class Key,class T, 3 class Compa ...

  6. STL之map和multimap容器

    1.简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺序排列.元素插入过程是按排 ...

  7. C++ STL 容器的一些总结 --- set(multiset)和map(multimap)

    1 set和multiset 1.1 插入元素方式 set只能用insert插入数据. insert返回值是一个pair<iterator, bool>, 即插入数据的迭代器以及是否插入成 ...

  8. set/multiset/unordered_set和map/multimap/unordered_map基础汇总

    引言 在STL中,有两种很常见的关联容器,分别是set和map,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的.所以关联容器经常用在关键字的查找中,效 ...

  9. 转 STL hash_map map

    几句话道出map和hash_map的区别 1. STL map is an associative array where keys are stored in sorted order using ...

  10. 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】

    [C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...

最新文章

  1. Apache Beam的架构概览
  2. 编写java程序的常见问题_Java程序的编写与执行、Java新手常见的问题解决
  3. python从入门到精通视频教程百度云-let's python从入门到精通视频教程
  4. 验证码---H_img.php
  5. Android开发之ConstraintLayout(约束布局)一个控件位于一个控件右上角类似RelativeLayout实现效果
  6. cfb为什么不需要填充_学日语为什么不需要准备,现在就可以学?
  7. 转:华 为 路 由 常 用 命 令
  8. MTK:BMT充电模块
  9. iOS8跳转到系统设置页
  10. ORB-SLAM2运行时遇到的问题
  11. 如何快速在线生成latex table表格
  12. 最专业逻辑图和最专业项目文档制作实战讲解
  13. eclipse代码文件误删恢复方法
  14. 51驱动DS1302制作电子时钟1602显示
  15. 教你如何谈朋友噢!!!zz
  16. Power BI数据建模
  17. 基于 OSGi的企业级开发框架实践——开发框架的创建
  18. JZOJ B组【GDKOI2014】壕壕的寒假作业
  19. Android开发--实现Android引导页
  20. 卖肾也真心伤不起! 史上最贵音响TOP10

热门文章

  1. 对文本的内容进行排序
  2. MybatisPlus入门Lombok的使用
  3. 数据库-优化-pt-kill-授权-数据
  4. exi 虚拟服务器,图文教程:如何在ESXi主机上部署VMware Tools 10
  5. AngularDart Material Design 步进器
  6. 以任务为向导建立系统的学习知识流程
  7. Kubernetes排错:用容器的元数据提供新思路
  8. Qt知识点汇总——来自网络
  9. 解决 SQLSERVER 2008 无法删除作业
  10. (转)Inno Setup入门(六)——在程序目录下创建文件夹