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相关推荐

  1. STL学习笔记-- multiset

    multiset 多重集合容器 与 set 集合容器一样, multiset 多重容器也使用红黑树组织元素数据,只是 multiset 容器允许将重复的元素键值插入,而 set 容器则不允许.mult ...

  2. C++ STL学习笔记

    C++ STL学习笔记一 为何要学习STL: 数据结构与算法是编程的核心,STL中包含各种数据结构和优秀的算法,确实值得深入学习,本文中虽然着重使用,但希望有心的朋友能多看看相关数据结构的实现,对于C ...

  3. c++高级编程学习笔记5

    multimap multimap 是一种允许多个元素使用同一个键的 map.和 map 一样,multimap 支持统一初始化.multimap的接口和 map 的接口几乎相同,区别在于multim ...

  4. C/C++ 开发 boost 库参考手册整理(2) 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  5. 算法训练营学习笔记1

    算法训练营学习笔记 贪心算法 心算法总是做出当前最好的选择,期望通过局部最优选择得到全局最优的解决方案.从问题的初始解开始,一步歩地做出当前最好的选择,逐步逼近问题的目标,尽可能得到最优解: 贪心本质 ...

  6. stl源码剖析_《STL源码剖析》学习笔记

    第二章 空间配置器 简述空间配置器: 关于一级空间配置器: 直接使用malloc.free.realloc进行内存管理操作.且在内存不足时,会陷入oom_malloc,即模拟C++的set_new_h ...

  7. 《Effective STL》学习笔记(第一部分)

    本书从STL应用出发,介绍了在项目中应该怎样正确高效的使用STL.本书共有7个小节50个条款,分别为 (1) 容器:占12个条款,主要介绍了所有容器的共同指导法则 (2) vector和string: ...

  8. C++/C学习笔记(九)

    C++/C学习笔记(九) --学习和使用STL 1.STL简介 STL(Standard Template Library)是C++标准库的最主要和最重要的组成部分.STL是一个标准规范,只是为容器. ...

  9. 黑马程序员C++学习笔记(第三阶段核心:STL)--- 更新中

    目录 迭代器 序列式容器 vector -- 可随机访问 list -- 不支持随机访问 deque -- 动态 关联式容器 -- 红黑树 map multimap set multiset -- 废 ...

  10. Guava学习笔记(转)

    Guava(瓜娃)学习笔记 Guava工程包含了若干被google的java项目广泛依赖的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitiv ...

最新文章

  1. 终于实现“代码恒久远,Bug 永流传”,你今天被官宣了吗? | 每日趣闻
  2. 2-51单片机ESP8266学习-AT指令(开发板51单片机自动冷启动下载原理)
  3. Creating UIImage with renderingMode in Swift
  4. mybatis添加方法可以传map吗_Mybatis中传递多个参数的4种方法总结
  5. spring学习(42):属性注入注入数组和列表的说明
  6. PCA-SIFT原理及源码解析
  7. (待补充)【n个骰子的点数】剑指offer——面试题43:n个骰子的点数
  8. C# winForm utf8 gbk 相互转码小工具
  9. echarts 3d地球js特效代码
  10. 均线黄金交叉的不同周期分类详解
  11. Linux 命令(186)—— atq 命令
  12. 本周(12.23-12.29)半价电子书 1
  13. 1526 B. I Hate 1111
  14. 饥荒联机版Mod开发——衣服(十一)
  15. 币圈炒币只有四种人能赚到钱其中之一是使用炒币机器人的玩家
  16. ACM训练了日记—12月10日
  17. java利用redis的setIfAbsent和incr,实现自增,限制总数
  18. 从业了八年程序员觉得已经是非常的枯燥了
  19. 无效合同效力的认定方式,需要去法院申请确认吗?
  20. 【python/qt】Python+Qt实现简单的视频监控界面

热门文章

  1. [转帖] 职场学习=贼学技术
  2. LFM算法详解和实战
  3. EditorUtility.SetDirty 设置已改变
  4. C语言函数一章教学,c语言案例教程:函数教学讲义.ppt
  5. oracle 获取awk报告,Oracle 使用 ass.awk 工具查看 system state dump 说明
  6. java连不上mysql_eclipse连接不上mysql
  7. 机电工程系计算机网络技术,我院物联网工程专业3+1及计算机网络技术专业2+1项目正式开营...
  8. javascript 数组操作函数
  9. WPF-创建超链接文本
  10. MySQL 语句使用到的关键字 函数 记录