STL 之map,multimap
#include <map>
map和multimap的唯一区别:map中不可以包含重复键值,而multimap中可以。
构造方法
- mType<type1,type2> tmap() 默认构造方法
- mType<type1,type2> tmap(beg,end) 通过迭代器构造
示例:
- map<int,string> intmap;
- map<string,string > othermap;
- multimap<int,string> stringMultiMap;
- multimap<string, string > otherStringMultiMap;
注:1,C++中map 用红黑树构造,时间复杂度为log(n)
2,可以用非标准的hash_map代替,其头文件在#include<hash_map>,要权衡时间,空间等合理选择。
操作:
- tmap.insert(pair<type1,tpye2>) 添加一个键值对
- tmap.insert(map<type1,type2>::value_type(key,value)) 添加 一个map
- tmap[key] = value 通过索引添加// 若key不存在是添加操作,存在是修改操作
- tmap.find(key) 查找,返回迭代器,没有找到返回最后一个元素的迭代器
- tmap.erase(pos) 通过迭代器删除
- tmap.clear() 删除所有元素
map 和 multimap 用法大致相同,示例代码是map的操作
示例代码:
- #include <iostream>
- #include <iterator>
- #include <string>
- #include <map>
- using namespace std;
- int main() {
- map <string,string> stringMap;
- // 增加 ------------------------------------------------------------------------------------
- stringMap["A"]="Apple"; // 没有找到A,自动添加
- stringMap["A"]="Ada"; // 找到A,修改
- stringMap.insert(pair<string,string>("B","Boy")); // 插入B
- stringMap.insert(pair<string,string>("B","Bad")); // 重复insert 失败
- stringMap.insert(map<string,string>::value_type("C","Cat")); // 插入C
- stringMap["D"]="Dog"; // 插入D
- map<string,string>::iterator stringMapItr;
- // 遍历 ------------------------------------------------------------------------------------
- // 遍历map中的类容
- cout << "stringMap:" << endl;
- for (stringMapItr = stringMap.begin();stringMapItr != stringMap.end();stringMapItr ++)
- {
- cout << "key=" << stringMapItr->first << ",value=" << stringMapItr->second << endl;
- }
- // 查找 ------------------------------------------------------------------------------------
- // 通过索引方式查找 -
- // 如果查出成功返回 value,如果查找不成功将会自动插入键值(脏值)
- string getValue = stringMap["C"];
- cout << "string[\"C\"]=" << getValue << endl;
- // 通过迭代器查找 -
- // 如果查出成功返回 对应位置迭代器,如果查找不成功返回最后一个元素的下一个迭代器
- stringMapItr = stringMap.find("C");
- if(stringMapItr != stringMap.end()) {
- cout << "\"C\" is find" << endl;
- } else {
- cout << "\"C\" is not find" << endl;
- }
- // 删除 ------------------------------------------------------------------------------------
- stringMapItr = stringMap.begin();
- // 用迭代器擦除
- stringMap.erase(stringMapItr);
- // 遍历map中的类容
- cout << "stringMap earse A:" << endl;
- for (stringMapItr = stringMap.begin();stringMapItr != stringMap.end();stringMapItr ++)
- {
- cout << "key=" << stringMapItr->first << ",value=" << stringMapItr->second << endl;
- }
- // 删除所有元素
- stringMap.clear();
- // 遍历map中的类容
- cout << "stringMap clear:" << endl;
- for (stringMapItr = stringMap.begin();stringMapItr != stringMap.end();stringMapItr ++)
- {
- cout << "key=" << stringMapItr->first << ",value=" << stringMapItr->second << endl;
- }
- return 0;
- }
运行结果:
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相关推荐
- C++ STL容器 —— map/multimap 用法详解
C++ STL容器 -- map/multimap 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理.但别 ...
- C++STL的map/ multimap容器
3.9.1 map基本概念 简介: map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map ...
- map multimapc++_黑马C++视频笔记《STL之map/multimap》
/* map/multimap容器 * map/multimap属于关联式容器,底层结构是用二叉树实现. * - map中所有元素都是pair: * - pair中第一个元素为key(键值),起到索引 ...
- STL容器及其简单应用(stack、priority_queue、vector、deuqe、list、map/multimap、set/multiset)
目录 前言 [1]stack操作以及应用 stack的几个核心接口 利用stack完成进制转换 [2]priority_queue操作以及应用 priority_queue的几个核心接口 利用prio ...
- STL中 map 和 multimap
1. 所在头文件<map>. 命名空间std, 声明如下: 1 namespace std{ 2 template <class Key,class T, 3 class Compa ...
- STL之map和multimap容器
1.简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺序排列.元素插入过程是按排 ...
- C++ STL 容器的一些总结 --- set(multiset)和map(multimap)
1 set和multiset 1.1 插入元素方式 set只能用insert插入数据. insert返回值是一个pair<iterator, bool>, 即插入数据的迭代器以及是否插入成 ...
- set/multiset/unordered_set和map/multimap/unordered_map基础汇总
引言 在STL中,有两种很常见的关联容器,分别是set和map,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的.所以关联容器经常用在关键字的查找中,效 ...
- 转 STL hash_map map
几句话道出map和hash_map的区别 1. STL map is an associative array where keys are stored in sorted order using ...
- 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】
[C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...
最新文章
- Apache Beam的架构概览
- 编写java程序的常见问题_Java程序的编写与执行、Java新手常见的问题解决
- python从入门到精通视频教程百度云-let's python从入门到精通视频教程
- 验证码---H_img.php
- Android开发之ConstraintLayout(约束布局)一个控件位于一个控件右上角类似RelativeLayout实现效果
- cfb为什么不需要填充_学日语为什么不需要准备,现在就可以学?
- 转:华 为 路 由 常 用 命 令
- MTK:BMT充电模块
- iOS8跳转到系统设置页
- ORB-SLAM2运行时遇到的问题
- 如何快速在线生成latex table表格
- 最专业逻辑图和最专业项目文档制作实战讲解
- eclipse代码文件误删恢复方法
- 51驱动DS1302制作电子时钟1602显示
- 教你如何谈朋友噢!!!zz
- Power BI数据建模
- 基于 OSGi的企业级开发框架实践——开发框架的创建
- JZOJ B组【GDKOI2014】壕壕的寒假作业
- Android开发--实现Android引导页
- 卖肾也真心伤不起! 史上最贵音响TOP10