C++ 教程

C++ 教程 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学运算 C++ 布尔值 C++ 条件语句 C++ Switch 语句 C++ While 循环 C++ For 循环 C++ Break/Continue 语句 C++ 数组 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载

C++ 面向对象

C++ OOP C++ 类和对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态

C++ 高级教程

C++ 文件 C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 正则表达式

C++ 如何使用

C++ 两个数字相加

C++ 标准库参考

C++ 标准库 - 简介 C++ 标准库 - <fstream> C++ 标准库 - <iomanip> C++ 标准库 - <ios> C++ 标准库 - <iosfwd> C++ 标准库 - <iostream> C++ 标准库 - <istream> C++ 标准库 - <ostream> C++ 标准库 - <sstream> C++ 标准库 - <streambuf> C++ 标准库 - <atomic> C++ 标准库 - <complex> C++ 标准库 - <exception> C++ 标准库 - <functional> C++ 标准库 - <limits> C++ 标准库 - <locale> C++ 标准库 - <memory> C++ 标准库 - <new> C++ 标准库 - <numeric> C++ 标准库 - <regex> C++ 标准库 - <stdexcept> C++ 标准库 - <string> C++ 标准库 - <thread> C++ 标准库 - <tuple> C++ 标准库 - <typeinfo> C++ 标准库 - <utility> C++ 标准库 - <valarray>

C++ 模板库参考

C++ STL 库 - <array> C++ STL 库 - <bitset> C++ STL 库 - <deque> C++ STL 库 - <forward_list> C++ STL 库 - <list> C++ STL 库 - <map> C++ STL 库 - <queue> C++ STL 库 - <set> C++ STL 库 - <stack> C++ STL 库 - <unordered_map> C++ STL 库 - <unordered_set> C++ STL 库 - <vector> C++ STL 库 - <algorithm> C++ STL 库 - <iterator>

C++ 实例

C++ 实例 C++ 练习 C++ 测验



C++ 标准模板库 - <set>

简介

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

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