1. 程式人生 > >STL set(集合) C++

STL set(集合) C++

set集合容器實現了紅黑樹(Red-Black Tree)的平衡二叉檢索樹的的資料結構,在插入元素時,它會自動調整二叉樹的排列,把該元素放到適當的位置,以確保每個子樹根節點的鍵值大於左子樹所有節點的鍵值,而小於右子樹所有節點的鍵值;另外,還得確保根節點的左子樹的高度與有字數的高度相等,這樣,二叉樹的高度最小,從而檢索速度最快。要注意的是,它不會重複插入相同鍵值的元素,而採取忽略處理

平衡二叉檢索樹的檢索使用中序遍歷演算法,檢索效率高於vector、deque、和list的容器。另外,採用中序遍歷演算法可將鍵值由小到大遍歷出來,所以,可以理解為平衡二叉檢索樹在插入元素時,就會自動將元素按鍵值從小到大的順序排列。

標頭檔案:#include<set>

定義:set<資料型別> 變數名;例:set<資料型別> s;

常用方法:(加錯為常用方法)

兩個正向迭代器:begin()和end();

兩個反向迭代器:rbegin()和rend();

資料插入:insert();//插入資料元素;

資料刪除:erase(); //刪除資料元素 刪除物件可以為具體數值,或者迭代器物件;

資料的檢索:find(); //根據鍵值來返回一個迭代器物件,如果不存在返回end();

清除所有元素:clear();//清空集合;

判斷是否為空:empty();//判斷集合是否為空;

集合中元素的數目:size();//返回集合中元素的數目;

交換兩個集合變數:swap();//同vector和list

返回小於某個鍵值的迭代器:lower_bound();

返回大於(等於)某個鍵值的迭代器:upper_bound();