C++ multimap容器访问同一键值元素的不同方法
multimap是一种多元map容器,允许一个键对应多个值。
本文介绍了 multimap访问同一键值元素的三种不同方法,详细看下面代码:
typedef multimap<string,int>::size_type mstype;
typedef multimap<string,int>::iterator mulit;
multimap<string,int> mulmap;
//插入元素
mulmap.insert(make_pair("abc",));
mulmap.insert(make_pair("abc",));
mulmap.insert(make_pair("bcd",));
mulmap.insert(make_pair("bcd",)); for(mulit mt=mulmap.begin();mt!=mulmap.end();mt++){
cout<<mt->first<<" "<<mt->second<<endl;
}
/*方式1:最麻烦的方式:
(1)通过iter=find()找到某个键对应元素的迭代器,如果该键值对应多个值,则返回指向第一个元素的迭代器。
(2)通过cn=count()返回对应键元素的个数
(3)以迭代器iter为起始位置,遍历cn次
*/
cout<<"find count 方式:"<<endl;
mulit mb=mulmap.find("abc");
mstype mt=mulmap.count("abc");
for(mstype tt=;tt<mt;tt++,mb++){
cout<<mb->first<<" "<<mb->second<<endl;
}
/*方式2:upper_bound和lower_bound方式
通过lower_bound和upper_bound获取指向一个键对应元素的迭代器范围,其中
lower_bound返回指向键对应的第一个元素的迭代器位置
upper_bound返回指向这个键对应的最后一个元素的下一个位置的迭代器
*/
cout<<"upper_bound lower_bound 方式:"<<endl;
mulit lower=mulmap.lower_bound("bcd");
mulit upper=mulmap.upper_bound("bcd");
for(mulit tm=lower;tm!=upper;tm++){
cout<<mb->first<<" "<<mb->second<<endl;
}
/*方式3:直接用equal_range方法返回用pair封装的两个迭代器,两个迭代器类似于lower_bound和upper_bound返回的结果
*/
typedef pair<mulit,mulit> pmulit;
pmulit pl=mulmap.equal_range("bcd");
for(mulit tm=pl.first;tm!=pl.second;tm++){
cout<<mb->first<<" "<<mb->second<<endl;
}
因此推荐用后两种方式去获取同一键值的所有元素。
C++ multimap容器访问同一键值元素的不同方法的更多相关文章
- STL学习系列九:Map和multimap容器
1.map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...
- STL之Map和multimap容器
1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. 2)map中key值是唯一的.集合中的元素按一 ...
- C++ STL 学习笔记__(8)map和multimap容器
10.2.9 Map和multimap容器 map/multimap的简介 ² map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. ² ...
- STL Map和multimap 容器
STL Map和multimap 容器 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供 基于key的快速检索能力. ...
- STL_map和multimap容器
一.map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...
- 2.9 C++STL map/multimap容器详解
文章目录 2.9.1 引入 2.9.2 代码示例 map案列 multimap案列 2.9.3 代码运行结果 总结 2.9.1 引入 map相对于set区别,map具有键值和实值,所有元素根据键值自动 ...
- [C++]返回最值元素
1 priority_queue C++中优先队列是一种特殊的队列,能够返回队列中优先级最大或者最小的元素,其内部是由堆实现的,个人认为这种方式使用更加直观. 1.1 返回vector中的最值元素 # ...
- 第十三篇:multimap容器和multiset容器中的find操作
前言 multimap容器是map容器的“ 增强版 ”,它允许一个键对应多个值.对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器.那么对于multimap容器来说,find函数 ...
- multimap容器和multiset容器中的find操作
前言 multimap容器是map容器的“ 增强版 ”,它允许一个键对应多个值.对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器.那么对于multimap容器来说,find函数 ...
随机推荐
- sqlplus登录问题
问题1.sqlplus login -- SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory 在/e ...
- hdu 统计难题(map)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 map的强大之处,但是运行时间太长. 代码: #include <stdio.h> ...
- Spring框架和MVC原理
Spring框架和MVC原理 目录 Spring框架 SpringMVC工作原理 参考资料 回到顶部 Spring框架 Spring当前框架有20个jar包,大致可以分为6大模块: Core Cont ...
- linux_java_redis_postgresql_常用命令
redis 常用语法telnet 192.168.18.210 6379keys *llen队列名称llen 队列名称 postgresql常用语法psql -h192.168.18.210 -Up ...
- 【百度地图API】如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅、加油站、宾馆、大厦等
原文:[百度地图API]如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅.加油站.宾馆.大厦等 摘要: 在LBS上有这样一个常用的功能,查找附近所有的关键点(POI点,比如标志 ...
- ZOJ 3802 Easy 2048 Again 像缩进DP
链接:problemId=5334">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5334 题意:一个长度为5 ...
- 脉冲神经网络Spiking neural network
(原文地址:维基百科) 简单介绍: 脉冲神经网络Spiking neuralnetworks (SNNs)是第三代神经网络模型,其模拟神经元更加接近实际,除此之外,把时间信息的影响也考虑当中.思路是这 ...
- WebForm MapPageRoute 路由配置
WebForm MapPageRoute 路由配置 MapPageRoute 应该是 ASP.NET 4.0 中的东西,但现在我是第一次使用它,使用场景是:MVC 混合使用 WebForm,然后对 ...
- linux简单的数据包捕获分析
有时我们会遇到一些问题,需要捕捉数据包分析,当手头有没有专业的抓图工具,您可以使用tcpdump相反,看看(一般版本附带这个工具) 比如,我们要分析eth0与接口192.168.7.188 这个对象I ...
- ios基金会-XCode温馨提示
(一个)代号规格pragma mark 1.定义 #pragma 开头的代码是一条编译器指令,是一个特定于程序或编译器的指令. 不一定适用于其他编译器或其他环境.假设编译器不能识别该指令.则会将其忽略 ...