C++ 庫 - <set>



介紹

集合 (set) 是一種關聯容器,它包含一組已排序的、唯一的 Key 型別物件。每個元素只能出現一次,因此不允許重複。

有四種關聯容器:集合 (set)、多重集合 (multiset)、對映 (map) 和多重對映 (multimap)。

集合中元素的值一旦放入容器後就不能修改,即元素始終為常量。但是它們可以從容器中插入或刪除。

集合容器在透過鍵訪問單個元素方面通常比無序集合 (unordered_set) 容器慢,但它們允許基於其順序直接迭代子集。

定義

以下是來自 <set> 標頭檔案的 std::set 的定義

template < 
    class Key,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<Key>
> class set;

引數

  • Key - 包含的元素型別。

    Key 可以被任何其他資料型別替換,包括使用者定義型別。

成員型別

以下成員型別可以用作成員函式的引數或返回型別。

序號 成員型別 定義
1 key_type Key
2 value_type Key
3 reference Allocator::reference

value_type&

4 const_reference Allocator::const_reference

const value_type&

5 pointer Allocator::pointer

std::allocator_traits<Allocator>::pointer

6 const_pointer Allocator::const_pointer

std::allocator_traits<Allocator>::const_pointer

7 iterator 雙向迭代器 (BidirectionalIterator)
8 const_iterator 常量雙向迭代器 (constant BidirectionalIterator)
9 reverse_iterator std::reverse_iterator <iterator>
10 const_reverse_iterator std::reverse_iterator <const_iterator>
11 size_type 無符號整數型別 (std::size_t)
12 difference_type 有符號整數型別 (std::ptrdiff_t)
13 key_compare Compare
14 value_compare Compare
15 allocator_type Allocator

來自 <set> 的函式

以下是 <set> 標頭檔案中所有方法的列表。

成員函式

預設成員函式

序號 方法及描述
1 預設建構函式

構造集合容器。

2 範圍建構函式

使用範圍的內容構造集合容器。

3 複製建構函式

使用其他集合的副本構造集合容器。

4 移動建構函式

使用移動語義使用其他集合的內容構造集合容器。

5 初始化列表建構函式

使用初始化列表的內容構造集合容器。

6 (解構函式)

銷燬集合容器。

7 operator=

將值賦給集合容器。

迭代器

序號 方法及描述
1 set::begin

返回指向開頭的迭代器。

2 set::cbegin

返回指向開頭的常量迭代器。

3 set::end

返回指向結尾的迭代器。

4 set::cend

返回指向結尾的常量迭代器。

5 set::rbegin

返回指向反向開頭的反向迭代器。

6 set::crbegin

返回指向反向開頭的常量反向迭代器。

7 set::rend

返回指向反向結尾的反向迭代器。

8 set::crend

返回指向反向結尾的常量反向迭代器。

容量

序號 方法及描述
1 set::empty

返回集合容器是否為空。

2 set::size

返回集合容器中元素的數量。

3 set::max_size

返回集合容器可以容納的最大元素數量。

修改器

序號 方法及描述
1 set::clear

從集合容器中移除所有元素。

2 set::insert

在集合容器中插入新元素。

3 set::emplace

如果新元素唯一,則將其插入集合中。

4 set::emplace_hint

如果新元素唯一,則將其插入集合中,並提供有關插入位置的提示。

5 set::erase

從集合容器中移除單個元素或一系列元素。

6 set::swap

將容器的內容與另一個相同型別的集合容器的內容交換。

查詢

序號 方法及描述
1 set::count

返回集合容器中具有匹配值的元素的數量。

2 set::find

在集合容器中搜索值,如果找到則返回指向它的迭代器,否則返回指向 set::end 的迭代器。

3 set::lower_bound

返回一個迭代器,指向集合容器中第一個不被認為在 value 之前的元素。

4 set::upper_bound

返回一個迭代器,指向集合容器中第一個被認為在 value 之後的元素。

5 set::equal_range

返回一個範圍的邊界,該範圍包含集合容器中所有等效於 value 的元素。

觀察者

序號 方法及描述
1 set::key_comp

返回集合容器使用的比較物件的副本。

2 set::value_comp

返回集合容器使用的比較物件的副本。

分配器

序號 方法及描述
1 set::get_allocator

返回與集合容器關聯的分配器物件的副本。

廣告