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
返回与设置容器关联的分配器对象的副本。 |