set和multiset這些黑科技什麼的,能用的話當然是很茲瓷的~(≧▽≦)/~啦啦啦
ps:由於博主是蒟蒻,所以只知道那些操作是用來幹啥用的,並不清楚原理。。。
我只知道這東西是用rbt實現的,然而並不會寫(splay也行蛤)
這東西都不會的你還是別看了
include
然後定義就直接
(multi)set
《型別》 名稱
這兩個東西的區別是:set不含有重複元素,multiset含有
然後能定義的型別只要是能排序的應該都行。
set會自動把加入的元素排序
然後我們要用set《型別》 :: iterator來定義乙個迭代器
set中的掃瞄要用迭代器來進行
迭代器只能用++或–來更替
如果要使用迭代器所指向的元素,要在名稱前面加上*
begin()返回指向第乙個元素的迭代器
clear()清除所有元素
count()返回某個值元素的個數
empty()如果集合為空,返回true
end()返回指向最後乙個元素的迭代器
equal_range()返回集合中與給定值相等的上下限的兩個迭代器
erase()刪除集合中的元素
find()返回乙個指向被查詢到元素的迭代器
get_allocator() 返回集合的分配器
insert()在集合中插入元素
lower_bound()返回指向大於(或等於)某值的第乙個元素的迭代器
key_comp()返回乙個用於元素間值比較的函式
max_size()返回集合能容納的元素的最大限值
rbegin()返回指向集合中最後乙個元素的反向迭代器
rend()返回指向集合中第乙個元素的反向迭代器
size()集合中元素的數目
swap()交換兩個集合變數
upper_bound()返回大於某個值元素的迭代器
value_comp()返回乙個用於比較元素間的值的函式
當然,你也可以用乙個struct巢狀過載運算子來幹一些事情。。。
如果你喜歡的話
C Set和multiset常用用法
set集合容器 實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值 另外,還得保證根節點左子樹的高度與右子樹高度相等。平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector...
C STL set和multiset的使用
std sets 那個s這個物件裡面存貯的元素是從小到大排序的,因為用std less作為比較工具。1,set的含義是集合,它是乙個有序的容器,裡面的元素都是排序好的,支援插入,刪除,查詢等操作,就 像乙個集合一樣。所有的操作的都是嚴格在logn時間之內完成,效率非常高。set和multiset的區...
C STL set和multiset的用法
c stl set和multiset的使用 std sets 那個s這個物件裡面存貯的元素是從小到大排序的,因為用std less作為比較工具。1,set的含義是集合,它是乙個有序的容器,裡面的元素都是排序好的,支援插入,刪除,查詢等操作,就 像乙個集合一樣。所有的操作的都是嚴格在logn時間之內完...