類模板
<set>

std::set

template < class T,                        // set::key_type/value_type           class Compare = less<T>,        // set::key_compare/value_compare           class Alloc = allocator<T>      // set::allocator_type           > class set;
集合 (Set)
集合是遵循特定順序儲存唯一元素的容器。

set中,元素的值也標識了它(值本身就是,型別為T),並且每個值必須是唯一的。set中的元素的值一旦進入容器就不能被修改(元素總是 const 的),但可以從容器中插入或刪除它們。

在內部,set中的元素始終按照其內部比較物件(型別為Compare).

set)所指定的特定嚴格弱序標準進行排序。容器通常比 unordered_set 容器透過訪問單個元素要慢,但它們允許基於其順序對子集進行直接迭代。

集合通常實現為二叉搜尋樹

容器屬性

關聯容器
關聯容器中的元素是透過它們的而不是它們在容器中的絕對位置來引用的。
有序的
容器中的元素始終遵循嚴格的順序。所有插入的元素都會在此順序中獲得一個位置。
集合 (Set)
元素的值也是用於標識它的
唯一的鍵
容器中沒有兩個元素可以具有等效的
感知分配器
容器使用分配器物件來動態處理其儲存需求。

模板引數

T
元素的型別。set容器中的每個元素也由這個值唯一標識(每個值本身也是元素的鍵)。
別名為成員型別set::key_typeset::value_type.
Compare
一個二元謂詞,它接受兩個與元素型別相同的引數並返回一個bool值。表示式comp(a,b),其中 comp 是此型別的物件,ab 是鍵值,如果 a 在該函式定義的嚴格弱序中被認為在 b 之前,則應返回true
要放回的字元的set物件使用此表示式來確定元素在容器中遵循的順序以及兩個元素鍵是否等效(透過自反比較它們:如果!comp(a,b) && !comp(b,a),則它們是等效的)。set容器中沒有兩個元素可以等效。
這可以是一個函式指標或一個函式物件(參見 建構函式 以獲取示例)。它預設為less<T>,其返回結果與應用小於運算子 (a<b).
別名為成員型別set::key_compareset::value_compare.
分配器 (Alloc)
用於定義儲存分配模型的分配器物件型別。預設情況下,使用 allocator 類模板,它定義了最簡單的記憶體分配模型並且與值無關。
別名為成員型別set::allocator_type.

成員型別

成員型別定義說明
key_type第一個模板引數 (T)
value_type第一個模板引數 (T)
key_compare第二個模板引數 (Compare)預設為less<key_type>
value_compare第二個模板引數 (Compare)預設為less<value_type>
allocator_type第三個模板引數 (分配器 (Alloc))預設為allocator<value_type>
引用allocator_type::reference對於預設的 allocatorvalue_type&
const_referenceallocator_type::const_reference對於預設的 allocatorconst value_type&
指標allocator_type::pointer對於預設的 allocatorvalue_type*
const_pointerallocator_type::const_pointer對於預設的 allocatorconst value_type*
iterator指向value_type隨機訪問迭代器,可轉換為const_iterator
const_iterator指向const value_type
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_type一個有符號整數型別,與iterator_traits<iterator>::difference_type相同,通常與 ptrdiff_t 一樣
size_type一個可以表示任何非負值的difference_type的無符號整數型別,通常與 size_t 一樣
成員型別定義說明
key_type第一個模板引數 (T)
value_type第一個模板引數 (T)
key_compare第二個模板引數 (Compare)預設為less<key_type>
value_compare第二個模板引數 (Compare)預設為less<value_type>
allocator_type第三個模板引數 (分配器 (Alloc))預設為allocator<value_type>
引用value_type&
const_referenceconst value_type&
指標allocator_traits<allocator_type>::pointer對於預設的 allocatorvalue_type*
const_pointerallocator_traits<allocator_type>::const_pointer對於預設的 allocatorconst value_type*
iterator指向const value_type* 可轉換為const_iterator
const_iterator指向const value_type*
reverse_iteratorreverse_iterator<iterator>*
const_reverse_iteratorreverse_iterator<const_iterator>*
difference_type一個有符號整數型別,與
iterator_traits<iterator>::difference_type
相同,通常與 ptrdiff_t 一樣
size_type一個可以表示任何非負值的difference_type的無符號整數型別,通常與 size_t 一樣
*注意:set 中的所有迭代器都指向 const 元素。const_成員型別是否與其非const_對應項是同一型別取決於具體的庫實現,但程式不應依賴於它們的不同來過載函式const_iterator更通用,因為iterator總是可以轉換為它。

成員函式


迭代器:

容量:

修改器:

觀察器:

操作:

分配器: