STL set

概述:

关联容器,元素无重复,数据被组织成一棵红黑树

内部数据从小到大自动排序(也可从大到小)

set可以在时间复杂度为O(logN)的情况下插入,删除和查找数据。

set容器的定义:

set<类型> 对象名; 如:set<int> s;  

set<类型,比较结构体> 对象名; 如:set<int,myComp> s; Set容器在插入时,默认情况下按从小到大的顺序存储,可以通过自定义比较结构体,按从大到小的顺序存储或者按照多个关键字序列插入。

插入:

.insert(x);

删除:

.erase(x);        x可为元素值也可为迭代器

.erase(迭代器)

.erase(元素值)

.erase(迭代器1,迭代器2)

查找:

.lower_bound(x);           返回第一个大于等于x的数的地址(迭代器)           可用*访问其存储的值

.upper_bound(x);           返回第一个大于x的数的地址(迭代器)

如果所有元素都小于x,则返回最后一个数+1的位置,该位置是越界的

其他操作:

.size();

.clear();

.empty();

.find(x);     找到了,返回指向该元素的迭代器;没找到,返回s.end();

.count(x);   x存在返回1,不存在返回0

定义新的迭代器:

int main()
{
    set<int> v;
    set<int>::iterator p;
    v.insert(5);
    v.insert(4);
    v.insert(7);
    v.insert(2);
    v.insert(9);
    for(p=v.begin(); p!=v.end(); p++)
        cout<<*p<<' ';
    return 0;
}
https://segmentfault.com/q/1010000004749623

set 结构体

struct rec {
    int x,y;
    bool operator<( const node&b )const {
        if ( x==b.x ) return y<b.y;
        return x>b.x;
    }
};
multiset<rec> s;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值