STL set的总结

通过红黑树实现的set能够在log2nn为set中的节点数)的时间内完成插入、查找、删除的数据结构。
以整数集合为例

set<int> S;

首先是set的修改操作
1、set的插入通过set::insert()

S.insert(key);
然后键值key被插入到S中。

2、set的删除

//c++支持一下三种删除方式
S.erase(key);        //删除一个值,如果没有就无操作
S.erase(S.find(key));//删除迭代器代表的值,若果没有,就会删除S.end(),会导致在遍历set的时候无法终止。
S.erase(S.lower_bound(key1), S.lower_bound(key2));//删除[key1,key2)之内的所有值。

3、set的清空操作

S.clear();

4、set中的查找

S.find(key);        //返回迭代器
S.count(key);       //返回1或0,表示是存在key
S.lower_bound(key); //返回第一个大于等于key的迭代器
S.upper_bound(key); //返回第一个大于key的迭代器
S.equal_range(key); //返回一个pair<set::iterator, set::iterator> 分别是S.lower_bound(key)和S.upper_bound(key)的返回值。

然后我们可以通过这里面的操作完成求前驱和后继

iter=S.upper_bound(x);//求得x的后继
iter=S.lower_bound(x);iter--;//求得x的前驱。但是注意iter==S.begin()时没有前驱。iter --后仍为iter

转载于:https://www.cnblogs.com/geng4512/p/5296910.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值