【学习笔记】multiset+multimap之equal_range、upper_bound、lower_bound、count
multiset:
multiset中允许排序后用重复的元素,不去重
multiset<int> a;
a.insert(1);
a.insert(2);
a.insert(3);
a.insert(1);
a.insert(2);
a.insert(2);
遍历:begin()和end()
multiset<int>::iterator it;
for(it=a.begin();it!=a.end();it++)cout<<*it<<" ";
输出:1 1 2 2 2 3
equal_range(x):一种二分查找算法,返回两个迭代器first和second,即first=lower_bound(x),second=upper_bound(x)
auto m=a.equal_range(1);
for(it=m.first;it!=m.second;it++)//注意second和firstcout<<*it<<" ";
输出:1 1
upper_bound(x)+lower_bound(x):返回第一个大于x的迭代器+返回第一个大于等于x的迭代器
multiset<int>::iterator it,beg,end;
beg=a.lower_bound(1);
end=a.upper_bound(1);
for(it=beg;it!=end;it++)cout<<*it<<" ";
输出:1 1
count(x):返回x出现的次数
cout<<a.count(2)<<endl;
输出:3
multimap:
multimap<key,val> m;中允许同一个key值对应多个不同的val值,且会以key值大小自动排序
multimap<char,int> m;
m.insert(make_pair('a',1));
m.insert(make_pair('b',5));
m.insert(make_pair('a',2));
m.insert(make_pair('c',3));
m.insert(make_pair('c',2));
m.insert(make_pair('c',1));
遍历:
multimap<char,int>::iterator it;
for(it=m.begin();it!=m.end();it++)cout<<it->first<<" "<<it->second<<endl;
输出:
a 1
a 2
b 5
c 3
c 2
c 1
equal_range(x):
multimap<char,int>::iterator it;
auto f=m.equal_range('c');
for(it=f.first;it!=f.second;it++)cout<<it->second<<" ";
输出:3 2 1 //注:multimap只对key排序了,但value还是插入的顺序
upper_bound(x)+lower_bound(x):
multimap<char,int>::iterator it,beg,end;
beg=m.lower_bound('c');
end=m.upper_bound('c');
for(it=beg;it!=end;it++)cout<<it->second<<" ";
输出:3 2 1
count(x):x指key值
cout<<m.count('c');
输出:3
【学习笔记】multiset+multimap之equal_range、upper_bound、lower_bound、count相关推荐
- STL学习笔记-- multiset
multiset 多重集合容器 与 set 集合容器一样, multiset 多重容器也使用红黑树组织元素数据,只是 multiset 容器允许将重复的元素键值插入,而 set 容器则不允许.mult ...
- C++ STL学习笔记
C++ STL学习笔记一 为何要学习STL: 数据结构与算法是编程的核心,STL中包含各种数据结构和优秀的算法,确实值得深入学习,本文中虽然着重使用,但希望有心的朋友能多看看相关数据结构的实现,对于C ...
- c++高级编程学习笔记5
multimap multimap 是一种允许多个元素使用同一个键的 map.和 map 一样,multimap 支持统一初始化.multimap的接口和 map 的接口几乎相同,区别在于multim ...
- C/C++ 开发 boost 库参考手册整理(2) 【学习笔记】
文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...
- 算法训练营学习笔记1
算法训练营学习笔记 贪心算法 心算法总是做出当前最好的选择,期望通过局部最优选择得到全局最优的解决方案.从问题的初始解开始,一步歩地做出当前最好的选择,逐步逼近问题的目标,尽可能得到最优解: 贪心本质 ...
- stl源码剖析_《STL源码剖析》学习笔记
第二章 空间配置器 简述空间配置器: 关于一级空间配置器: 直接使用malloc.free.realloc进行内存管理操作.且在内存不足时,会陷入oom_malloc,即模拟C++的set_new_h ...
- 《Effective STL》学习笔记(第一部分)
本书从STL应用出发,介绍了在项目中应该怎样正确高效的使用STL.本书共有7个小节50个条款,分别为 (1) 容器:占12个条款,主要介绍了所有容器的共同指导法则 (2) vector和string: ...
- C++/C学习笔记(九)
C++/C学习笔记(九) --学习和使用STL 1.STL简介 STL(Standard Template Library)是C++标准库的最主要和最重要的组成部分.STL是一个标准规范,只是为容器. ...
- 黑马程序员C++学习笔记(第三阶段核心:STL)--- 更新中
目录 迭代器 序列式容器 vector -- 可随机访问 list -- 不支持随机访问 deque -- 动态 关联式容器 -- 红黑树 map multimap set multiset -- 废 ...
- Guava学习笔记(转)
Guava(瓜娃)学习笔记 Guava工程包含了若干被google的java项目广泛依赖的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitiv ...
最新文章
- 终于实现“代码恒久远,Bug 永流传”,你今天被官宣了吗? | 每日趣闻
- 2-51单片机ESP8266学习-AT指令(开发板51单片机自动冷启动下载原理)
- Creating UIImage with renderingMode in Swift
- mybatis添加方法可以传map吗_Mybatis中传递多个参数的4种方法总结
- spring学习(42):属性注入注入数组和列表的说明
- PCA-SIFT原理及源码解析
- (待补充)【n个骰子的点数】剑指offer——面试题43:n个骰子的点数
- C# winForm utf8 gbk 相互转码小工具
- echarts 3d地球js特效代码
- 均线黄金交叉的不同周期分类详解
- Linux 命令(186)—— atq 命令
- 本周(12.23-12.29)半价电子书 1
- 1526 B. I Hate 1111
- 饥荒联机版Mod开发——衣服(十一)
- 币圈炒币只有四种人能赚到钱其中之一是使用炒币机器人的玩家
- ACM训练了日记—12月10日
- java利用redis的setIfAbsent和incr,实现自增,限制总数
- 从业了八年程序员觉得已经是非常的枯燥了
- 无效合同效力的认定方式,需要去法院申请确认吗?
- 【python/qt】Python+Qt实现简单的视频监控界面
热门文章
- [转帖] 职场学习=贼学技术
- LFM算法详解和实战
- EditorUtility.SetDirty 设置已改变
- C语言函数一章教学,c语言案例教程:函数教学讲义.ppt
- oracle 获取awk报告,Oracle 使用 ass.awk 工具查看 system state dump 说明
- java连不上mysql_eclipse连接不上mysql
- 机电工程系计算机网络技术,我院物联网工程专业3+1及计算机网络技术专业2+1项目正式开营...
- javascript 数组操作函数
- WPF-创建超链接文本
- MySQL 语句使用到的关键字 函数 记录