通过红黑树实现的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