1.關於set
C++ STL 之所以得到廣泛的贊譽,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封裝了許多復雜的數據結構算法和大量常用數據結構操作。vector封裝數組,list封裝了鏈表,map和set封裝了二叉樹等,在封裝這些數據結構的時候,STL按照程序員的使用習慣,以成員函數方式提供的常用操作,如:插入、排序、刪除、查找等。讓用戶在STL使用過程中,並不會感到陌生。
關於set,必須說明的是set關聯式容器。set作為一個容器也是用來存儲同一數據類型的數據類型,並且能從一個數據集合中取出數據,在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。應該注意的是set中數元素的值不能直接被改變。C++ STL中標准關聯容器set, multiset, map, multimap內部采用的就是一種非常高效的平衡檢索二叉樹:紅黑樹,也成為RB樹(Red-Black Tree)。RB樹的統計性能要好於一般平衡二叉樹,所以被STL選擇作為了關聯容器的內部結構。
注意:
1、set中的元素都是排好序的
2、set集合中沒有重復的元素
2.set中常用的方法
begin() 返回set容器第一個元素的迭代器
end() 返回一個指向當前set末尾元素的下一位置的迭代器.
clear() 刪除set容器中的所有的元素
empty() 判斷set容器是否為空
max_size() 返回set容器可能包含的元素最大個數
size() 返回當前set容器中的元素個數
rbegin() 返回的值和end()相同
rend() 返回的值和begin()相同
erase(iterator) 刪除定位器iterator指向的值
erase(first,second) 刪除定位器first和second之間的值
erase(key_value), 刪除鍵值key_value的值
find() , 返回給定值值得定位器,如果沒找到則返回end()。
insert(key_value)
將key_value插入到set中 ,返回值pair<set<int>::iterator,bool>,bool標志着插入是否成功,而iterator代表插入的位置,若key_value已經在set中,則iterator表示的key_value在set中的位置。
inset(first,second) 將定位器first到second之間的元素插入到set中,返回值是void.
lower_bound(key_value) ,返回第一個大於等於key_value的定位器
upper_bound(key_value),返回最后一個大於等於key_value的定位器
如果想要了解具體用法,點擊下面鏈接
https://blog.csdn.net/byn12345/article/details/79523516