C++ STL 库 - <set>

创建于 2024-12-03 / 24
字体: [默认] [大] [更大]

简介

set 是一个关联容器,其中包含一组有序的 Key 类型的唯一对象。 每个元素只能出现一次,因此不允许重复。

有四种关联容器:set、multiset、map 和 multimap。

集合中元素的值不能在容器中修改一次,即元素始终为 const。 但它们可以从容器中插入或移除。

set 容器在通过键访问单个元素时通常比 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 Unsigned Integer Type (std::size_t)
12 difference_type Signed Integer Type (std::ptrdiff_t)
13 key_compare Compare
14 value_compare Compare
15 allocator_type Allocator

<set> 中的函数

下面是来自 <set> 标头的所有方法的列表。

成员函数

默认成员函数

序号 方法 & 说明
1 Default constructor

构造集合容器。

2 Range constructor

构造具有范围内容的集合容器。

3 Copy constructor

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

4 Move constructor

使用移动语义构造具有其他集合内容的集合容器。

5 Initializer-list constructor

使用初始化器列表的内容构造集合容器。

6 (destructor)

破坏 set 容器。

7 operator=

将值分配给 set 容器。

迭代器

序号 方法 & 说明
1 set::begin

将迭代器返回到开头。

2 set::cbegin

将 const 迭代器返回到开头。

3 set::end

返回要结束的迭代器。

4 set::cend

返回要结束的 const 迭代器。

5 set::rbegin

返回反向迭代器以反向开始。

6 set::crbegin

返回 const 反向迭代器以反向开始。

7 set::rend

将反向迭代器返回到反向结束。

8 set::crend

将 const 反向迭代器返回到反向结束。

容量

序号 方法 & 说明
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

返回一个迭代器,该迭代器指向集合容器中的第一个元素,该元素不被认为在值之前。

4 set::upper_bound

返回一个迭代器,该迭代器指向集合容器中的第一个元素,该元素被认为是在值之后。

5 set::equal_range

返回一个范围的边界,该范围包括集合容器中与 value 等效的所有元素。

OBSERVERS - 观察者模式

序号 方法 & 说明
1 set::key_comp

返回设置容器使用的比较对象的副本。

2 set::value_comp

返回设置容器使用的比较对象的副本。

分配器

序号 方法 & 说明
1 set::get_allocator

返回与设置容器关联的分配器对象的副本。



0 人点赞过