您的位置:首页 > 其它

STL set的总结

2015-09-17 22:23 232 查看
通过红黑树实现的set能够在log2n (n为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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: