- 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++ STL 库
- C++ 库 - <array>
- C++ 库 - <bitset>
- C++ 库 - <deque>
- C++ 库 - <forward_list>
- C++ 库 - <list>
- C++ 库 - <map>
- C++ 库 - <multimap>
- C++ 库 - <queue>
- C++ 库 - <priority_queue>
- C++ 库 - <set>
- C++ 库 - <stack>
- C++ 库 - <unordered_map>
- C++ 库 - <unordered_set>
- C++ 库 - <vector>
- C++ 库 - <algorithm>
- C++ 库 - <iterator>
- C++ 高级库
- C++ 库 - <any>
- C++ 库 - <barrier>
- C++ 库 - <bit>
- C++ 库 - <chrono>
- C++ 库 - <cinttypes>
- C++ 库 - <clocale>
- C++ 库 - <condition_variable>
- C++ 库 - <coroutine>
- C++ 库 - <cstdlib>
- C++ 库 - <cstring>
- C++ 库 - <cuchar>
- C++ 库 - <charconv>
- C++ 库 - <cfenv>
- C++ 库 - <cmath>
- C++ 库 - <ccomplex>
- C++ 库 - <expected>
- C++ 库 - <format>
- C++ 库 - <future>
- C++ 库 - <flat_set>
- C++ 库 - <flat_map>
- C++ 库 - <filesystem>
- C++ 库 - <generator>
- C++ 库 - <initializer_list>
- C++ 库 - <latch>
- C++ 库 - <memory_resource>
- C++ 库 - <mutex>
- C++ 库 - <mdspan>
- C++ 库 - <optional>
- C++ 库 - <print>
- C++ 库 - <ratio>
- C++ 库 - <scoped_allocator>
- C++ 库 - <semaphore>
- C++ 库 - <source_location>
- C++ 库 - <span>
- C++ 库 - <spanstream>
- C++ 库 - <stacktrace>
- C++ 库 - <stop_token>
- C++ 库 - <syncstream>
- C++ 库 - <system_error>
- C++ 库 - <string_view>
- C++ 库 - <stdatomic>
- C++ 库 - <variant>
- C++ STL 库速查表
- C++ STL - 速查表
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
返回与集合容器关联的分配器对象的副本。 |