c++ stl集合set介紹 c++ stl集合(set)是一種包含已排序物件的關聯容器。
set / multiset會根據待定的排序準則,自動將元素排序。兩者不同在於前者不允許元素重複,而後者允許。
c++ stl集合set介紹
c++ stl集合(set)是一種包含已排序物件的關聯容器。set / multiset會根據待定的排序準則,自動將元素排序。兩者不同在於前者不允許元素重複,而後者允許。
1) 不能直接改變元素值,因為那樣會打亂原本正確的順序,要改變元素值必須先刪除舊元素,則插入新元素
2) 不提供直接訪問元素的任何操作函式,只能通過迭代器進行間接訪問,而且從迭代器角度來看,元素值是常數
3) 元素比較動作只能用於型別相同的容器(即元素和排序準則必須相同)
set模板原型://key為元素(鍵值)型別
1template , class alloc = stl_default_allocator(key) >
從原型可以看出,可以看出比較函式物件及記憶體分配器採用的是預設引數,因此如果未指定,它們將採用系統預設方式。
set的各成員函式列表如下 :
c++ stl容器set成員函式 : begin()--返回指向第乙個元素的迭代器
c++ stl容器set成員函式 : clear()--清除所有元素
c++ stl容器set成員函式 : count()--返回某個值元素的個數
c++ stl容器set成員函式 : empty()--如果集合為空,返回true
c++ stl容器set成員函式 : end()--返回指向最後乙個元素的迭代器
c++ stl容器set成員函式 : equal_range()--返回集合中與給定值相等的上下限的兩個迭代器
c++ stl容器set成員函式 : erase()--刪除集合中的元素
c++ stl容器set成員函式 : find()--返回乙個指向被查詢到元素的迭代器
c++ stl容器set成員函式 : get_allocator()--返回集合的分配器
c++ stl容器set成員函式 : insert()--在集合中插入元素
c++ stl容器set成員函式 : lower_bound()--返回指向大於(或等於)某值的第乙個元素的迭代器
c++ stl容器set成員函式 : key_comp()--返回乙個用於元素間值比較的函式
c++ stl容器set成員函式 : max_size()--返回集合能容納的元素的最大限值
c++ stl容器set成員函式 : rbegin()--返回指向集合中最後乙個元素的反向迭代器
c++ stl容器set成員函式 : rend()--返回指向集合中第乙個元素的反向迭代器
c++ stl容器set成員函式 : size()--集合中元素的數目
c++ stl容器set成員函式 : swap()--交換兩個集合變數
c++ stl容器set成員函式 : upper_bound()--返回大於某個值元素的迭代器
c++ stl容器set成員函式 : value_comp()--返回乙個用於比較元素間的值的函式
C 高階 STL原始碼之set與multiset
set的特性是,所有元素都會根據元素的鍵值自動被排序,set元素的鍵值就是實值,實值就是鍵值,set不允許兩個元素有相同的鍵值。set的元素值不可以通過迭代器來改變,因為set元素就是其鍵值,關係到set元素的排列規則 如果任何改變set元素值,會嚴重破壞set組織。set是以rb tree作為底層...
STL學習筆記7 容器set和multiset
在標頭檔案中定義 namespace std set和multiset都是關聯容器,是有序的集合,集合中包含不可重複的 型別為key的元素。排序通過使用型別為compare的比較函式比較來實現。搜尋,刪除和插入操作具有對數時間複雜度。set和multiset通常都以紅黑樹實現。multiset相對s...
C STL中的容器 Set
set跟vector差不多,它跟vector的唯一區別就是,set裡面的元素是有序的且唯一的,只要你往set裡新增元素,它就會自動排序,而且,如果你新增的元素set裡面本來就存在,那麼這次新增操作就不執行。要想用set先加個頭檔案set。其中數值型按照從小到大排列 字元型按照字典序排列 includ...