1. 程式人生 > >STL set的總結

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