STL set的总结

来源:互联网 发布:网络大电影众筹平台 编辑:程序博客网 时间:2024/06/06 20:38

通过红黑树实现的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,表示是存在keyS.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
0 0
原创粉丝点击