C STL的set與multiset的使用

2021-08-26 12:20:09 字數 1557 閱讀 2408

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...