multiset [STL]

View Code
struct Info{
    int val,key;
    bool friend operator<(Info x,Info y) {
        return x.val>y.val; //定义比较,默认按照val大->小排序
    }
};
multiset<int, greater<int> > sbt;

//头文件:#include <set>
//multiset<int> sbt;         //默认小到大
//multiset<int, greater<int> > sbt; //定义大到小
//元素键值允许重复 O(log n)
//注意 使用前先sbt.clear()
//sbt.empty()      //判断是否有元素
//sbt.insert(x)    //插入x元素
//sbt.erase(x);    //删除x元素
//sbt.count(x)     //x元素有多少个
//sbt.begin()       //第一个元素*(sbt.begin())
//*lower_bound(sbt.begin(),sbt.end(),x) //返回>=x的第一个元素
// pair<multiset<int>::iterator, multiset<int>::iterator> range;
//range = sbt.equal_range(x); //返回x的上下界的迭代器

int main() {
    int i,j,k,tmp;
    Info tt;
    sbt.clear();
    for(i=1;i<=10;i++) sbt.insert(rand()-1);
    multiset<int,greater<int> >::iterator it;    //定义迭代器,默认小到大
    for(it=sbt.begin();it!=sbt.end();it++) cout<<(*it)<<" "<<endl;
//    tmp=*lower_bound(sbt.begin(),sbt.end(),1000);
//    printf("%d\n", tmp);
    return 0;
}
原文地址:https://www.cnblogs.com/zhang1107/p/3045120.html