STL set的總結
阿新 • • 發佈:2019-01-02
通過紅黑樹實現的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