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

返回与集合容器关联的分配器对象的副本。

广告