首页 > 其他分享 >multiset

multiset

时间:2023-01-20 12:11:20浏览次数:51  
标签:ld 12 元素 序列 multiset include

c++语言中,multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。

简单应用:
通过一个程序来看如何使用multiset:

#include <string>
#include <iostream>
#include <set>
using namespace std;
void main(){
    intx;
    scanf("%ld",&x);
    multiset<int>h;          //建立一个multiset类型,变量名是h,h序列里面存的是int类型,初始h为空
    while(x!=0){
        h.insert(x);         //将x插入h中
        scanf("%ld",&x);
    }    
    while(!h.empty()){       // 序列非空 h.empty()==true时 表示h已经空了
        __typeof(h.begin()) c=h.begin();
                             //c指向h序列中第一个元素的地址,第一个元素是最小的元素
        printf("%ld ",*c);   //将地址c存的数据输出
        h.erase(c);          //从h序列中将c指向的元素删除
    }
}

 


对于输入数据:32 61 12 2 12 0,该程序的输出是:2 12 12 32 61。

标签:ld,12,元素,序列,multiset,include
From: https://www.cnblogs.com/manamouse/p/17062642.html

相关文章

  • STL----multiset,平衡二叉数
    《作用》查找,删除,增加节点基本上都是O(logn)多用在比如:vector或一般数组,我们知道如果用这些数据结构要维护一个序列有序,当我们要插入一个数到某个特定的位置那么最坏会......
  • codeforces 1354D - Multiset (线段树或者2分)
    题目大意:已知一个数列an,我们每次可以添加一个数k,或者把第k大的数字去掉。问我们经过k次操作后,数列中任意1个剩余的数字。n,q<=1e6解题思路:首先最简单的思路是线段树。线段......
  • set/multiset-有序二叉树
    3.8set/multiset容器3.8.1set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set......
  • Set和multiset容器
     ......
  • unordered_map,unordered_multimap,unordered_set,unordered_multiset
    unordered_mapunordered_map是关联容器,含有带唯一键的键-值pair。搜索、插入和元素移除拥有平均常数时间复杂度。 元素在内部不以任何特定顺序排序,而是组织进桶中。......
  • C++入门到理解set/multiset容器、pair对组
    一:基本概念在插入元素的时候会自动排好序,比如插入的是1,3,4,2,打印是1,2,3,4.底层是通过二叉树结构实现的,set容器不允许有重复的元素,但是multiset允许有元素重复。二:构造,遍历,赋值#i......
  • 【STL】关联式容器 - Set和Multiset
    Set和MultisetSTL提供的vector,list和deque属于序列式容器即可序群集,每个元素均有固定的位置,取决于插入时机和地点,和元素值无关。如果以追加的方式对一个群集置入六个元素......
  • ABC 241D - Sequence Query(multiset)
    newknowledge(stl)multiset位于库中,可以看成一个序列,插入一个数,删除一个数都可以在O(logn)的时间内完成,能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。h......