自动排序容器用法set和multiset

头文件#include<set>

区别:set元素不能重复,multiset可重复

其函数等方式都一致,我以set为例演示。


 容器创建和初始化

int a[5]={1,3,2};

set<int> st;

set<int> st(a,a+3); 从a数组下标0开始获取3个元素

常用函数操作

s.begin() 返回set容器第一个元素位置
s.end() 返回set容器最后元素下一个位置
s.clear() 删除所有元素
s.empty() 容器为空返回1,非空返回0
s.insert() 插入元素
s.erase() 删除元素
s.size() 返回容器元素个数
s.count() 查找容器是否有该元素,有为1,否则为0
s.upper_bound(x) 查找第一个大于x的迭代器
s.lower_bound(x) 查找第一个大于等于x的迭代器

遍历容器

    for(auto it=st.begin();it!=st.end();it++)
    cout<<*it<<" ";

排序类型

默认从小到大排序

    set<int,greater<int>> st; 从大到小排序
    

自定义排序

假设存在类
class student{
public:
    string name;
    int age;
};
要对其按年龄排序的话
class myoperator{
public:
    bool operator()(const student s1,const student s2){
        return s1.age<s2.age; 从小到大
    }
};
在容器引用该类就行
set<student,myoperator> st;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值