Set、multiset都是集合类,
差别在与set中不允许有重复元素,
multiset中允许有重复元素。
sets和multiset内部以平衡二叉树实现。
 
multiset 多重集合容器是一个可容纳重复元素键值的有序关联容器。
与 set 容器一样,使用红黑树作为容器的内部数据结构,元素的搜索操作都是具有对数级的算法时间复杂度。
它的 find 和 equal_range 函数,可搜索出某一键值下的所有元素位置。
 
multiset 缺点:和 set 一样,如果 插入、删除 操作频繁了,multiset 就不适合。
multiset 优点:相对于 set ,它能插入重复的元素。当然,它的检索速度也是非常快的。

遍历 multiset 容器元素
multiset<int>::iterator i, iend;
iend = ms.end();
for (i=ms.begin(); i!=iend; ++i)
cout << *i << ' ';
反向遍历 multiset 容器
multiset<int>::reverse_iterator ri, riend;
riend = ms.rend();
for (ri=ms.rbegin(); ri!=riend; ++ri)
cout << *ri << ' ';
find 搜索元素
multiset<int>::reverse_iterator ri, riend;
riend = ms.rend();
for (ri=ms.rbegin(); ri!=riend; ++ri)
cout << *ri << ' ';
equal_range 搜索元素
v = ;
pair<multiset<int>::iterator, multiset<int>::iterator> p = ms.equal_range(v);
重复键值元素
multiset<int>::iterator j;
cout << "键值为" << v << "的所有元素为:";
for (j=p.first; j!=p.second; ++j)
cout << *j << ' ';

 

std::multiset的更多相关文章

  1. C++ std::multiset

    std::multiset template < class T, // multiset::key_type/value_type class Compare = less<T>, ...

  2. UVA11136Hoax or what( multiset的应用)

    题目链接 题意:n天,每天往一个箱子里放m个数,放完之后取最大的Max和最小的min做差,并把这两个数去掉,求n天之后的和 multiset 和 set的原理是相似的,multiset可以存多个相同的 ...

  3. STL之multiset

    参见http://www.cplusplus.com/reference/set/multiset/ template < class T,                            ...

  4. HDU 2275 multiset

    题意:n个操作 Push 入容器 Pop弹出一个 满足<=该数的最大的数(若没有输出No Element!) 开始用set打了一遍wrong了,这里入容器的数是有重复的,所以用multiset ...

  5. SPOJ - VISIBLEBOX [multiset的使用]

    tags:[STL][sort][贪心]题解:做法:先对数组a进行排序,再将数组a从头到尾扫一遍,使用multiset维护最小值,如果,即将放入集合的数字>=最小值的两倍,那我们就删除掉多重集合 ...

  6. 洛谷.1110.[ZJOI2007]报表统计(Multiset Heap)

    题目链接 主要思路 /* 对于询问1,用堆代替multiset/Splay 对于询问2,multiset 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个 ...

  7. 洛谷.1110.[ZJOI2007]报表统计(Multiset)

    题目链接 主要思路 /* 其实只需要multiset即可 对于询问1,删除.插入差值,输出最小元素 对于询问2,插入后用前驱后继更新 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一 ...

  8. UVA 11136 Hoax or what (multiset)

    题目大意: 超时进行促销.把账单放入一个箱子里 每次拿取数额最大的和最小的,给出 最大-最小  的钱. 问n天总共要给出多少钱. 思路分析: multiset 上直接进行模拟 注意要使用long lo ...

  9. 记两个std接口equal_range,set_difference

    1.equal_range equal_range是C++ STL中的一种二分查找的算法,试图在已排序的[first,last)中寻找value,它返回一对迭代器i和j,其中i是在不破坏次序的前提下, ...

随机推荐

  1. Kubernetes v1.16 发布 | 云原生生态周报 Vol. 20

    作者:心贵.进超.元毅.心水.衷源.洗兵 业界要闻 Kubernetes v1.16 发布 在这次发布中值得关注的一些特性和 Feature: CRD 正式进入 GA 阶段: Admission We ...

  2. 11 (OC)* CoreImage

    coreimage framework 组成 apple 已经帮我们把image的处理分类好,来看看它的结构: 主要分为三部分: 1)定义部分:CoreImage 何CoreImageDefines. ...

  3. 【linux】【jenkins】自动化运维三 整合gitlab、docker发布vue项目

    由于工作需要,这里我先创建一个vue的工程. 1.首先安装好gitlab相关插件:GitLab.GitLab Hook.NodeJS 插件安装参考:https://www.cnblogs.com/jx ...

  4. CF #579 (Div. 3) E.Boxers

    E.Boxers time limit per test2 seconds memory limit per test256 megabytes inputstdin outputstdout The ...

  5. hadoop之mapreduce详解(进阶篇)

    上篇文章hadoop之mapreduce详解(基础篇)我们了解了mapreduce的执行过程和shuffle过程,本篇文章主要从mapreduce的组件和输入输出方面进行阐述. 一.mapreduce ...

  6. MapReduce之Job提交流程源码和切片源码分析

    hadoop2.7.2 MapReduce Job提交源码及切片源码分析 首先从waitForCompletion函数进入 boolean result = job.waitForCompletion ...

  7. Spring boot 梳理 - SpringBoot中注入ApplicationContext对象的三种方式

    直接注入(Autowired) @Configuration public class OAConfig { @Autowired private ApplicationContext applica ...

  8. RocketMQ学习 -> NameServer路由中心

    RocketMQ项目代码核心目录说明 broker:broker启动进程 client:消息客户端,包含消息生产者,消息消费者相关类 common:公共包 dev:开发者信息(非源代码) distri ...

  9. java8 Optional使用总结

    [前言] java8新特性 java8 函数接口 java8 lambda表达式 Java 8 时间日期使用 java8 推出的Optional的目的就是为了杜绝空指针异常,帮助开发者开发出更优雅的代 ...

  10. Linux 常用解压和压缩命令

    .tar 解包 tar xvf filename.tar.tar 打包 tar cvf filename.tar dirname.gz 解压1 gunzip filename.gz.gz 解压2 gz ...