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。