NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
set< Key, Compare, Alloc > 模板类 参考

集合容器 更多...

#include <set.hpp>

Public 类型

using key_type = Key
 键类型
using value_type = Key
 值类型
using key_compare = Compare
 键比较函数类型
using value_compare = Compare
 值比较函数类型
using size_type = typename base_type::size_type
 大小类型
using difference_type = typename base_type::difference_type
 差值类型
using pointer = typename base_type::pointer
 指针类型
using const_pointer = typename base_type::const_pointer
 常量指针类型
using reference = typename base_type::reference
 引用类型
using const_reference = typename base_type::const_reference
 常量引用类型
using iterator = typename base_type::iterator
 迭代器类型
using const_iterator = typename base_type::const_iterator
 常量迭代器类型
using reverse_iterator = typename base_type::reverse_iterator
 反向迭代器类型
using const_reverse_iterator = typename base_type::const_reverse_iterator
 常量反向迭代器类型
using allocator_type = typename base_type::allocator_type
 分配器类型

Public 成员函数

 set ()
 默认构造函数
 set (const key_compare &comp)
 构造函数,指定比较函数
 set (const set &other)
 拷贝构造函数
setoperator= (const set &other)
 拷贝赋值运算符
 set (set &&other) noexcept(is_nothrow_move_constructible_v< base_type >)
 移动构造函数
setoperator= (set &&other) noexcept(is_nothrow_swappable_v< base_type >)
 移动赋值运算符
template<typename Iterator>
 set (Iterator first, Iterator last)
 范围构造函数
template<typename Iterator>
 set (Iterator first, Iterator last, const key_compare &comp)
 范围构造函数,指定比较函数
 set (std::initializer_list< value_type > ilist)
 初始化列表构造函数
 set (std::initializer_list< value_type > ilist, const key_compare &comp)
 初始化列表构造函数,指定比较函数
setoperator= (std::initializer_list< value_type > ilist)
 初始化列表赋值运算符
 ~set ()=default
 析构函数
NEFORCE_NODISCARD iterator begin () noexcept
 获取起始迭代器
NEFORCE_NODISCARD iterator end () noexcept
 获取结束迭代器
NEFORCE_NODISCARD const_iterator cbegin () const noexcept
 获取常量起始迭代器
NEFORCE_NODISCARD const_iterator cend () const noexcept
 获取常量结束迭代器
NEFORCE_NODISCARD reverse_iterator rbegin () noexcept
 获取反向起始迭代器
NEFORCE_NODISCARD reverse_iterator rend () noexcept
 获取反向结束迭代器
NEFORCE_NODISCARD const_reverse_iterator crbegin () const noexcept
 获取常量反向起始迭代器
NEFORCE_NODISCARD const_reverse_iterator crend () const noexcept
 获取常量反向结束迭代器
NEFORCE_NODISCARD size_type size () const noexcept
 获取元素数量
NEFORCE_NODISCARD size_type max_size () const noexcept
 获取最大可能大小
NEFORCE_NODISCARD bool empty () const noexcept
 检查是否为空
NEFORCE_NODISCARD key_compare key_comp () const noexcept
 获取键比较函数对象
NEFORCE_NODISCARD value_compare value_comp () const noexcept
 获取值比较函数对象
template<typename... Args>
pair< iterator, bool > emplace (Args &&... args)
 在set中就地构造元素
pair< iterator, bool > insert (const value_type &value)
 拷贝插入元素
pair< iterator, bool > insert (value_type &&value)
 移动插入元素
template<typename... Args>
iterator emplace_hint (iterator position, Args &&... args)
 在提示位置附近就地构造元素
iterator insert (iterator position, const value_type &value)
 在提示位置附近拷贝插入元素
iterator insert (iterator position, value_type &&value)
 在提示位置附近移动插入元素
template<typename Iterator>
void insert (Iterator first, Iterator last)
 范围插入元素
void erase (iterator position) noexcept(noexcept(tree_.erase(position)))
 删除指定位置的元素
size_type erase (const key_type &key) noexcept(noexcept(tree_.erase(key)))
 删除所有具有指定键的元素
void erase (iterator first, iterator last) noexcept(noexcept(tree_.erase(first, last)))
 删除指定范围内的元素
void clear () noexcept(noexcept(tree_.clear()))
 清空set
NEFORCE_NODISCARD iterator find (const key_type &key)
 查找具有指定键的元素
NEFORCE_NODISCARD const_iterator find (const key_type &key) const
 查找具有指定键的常量元素
NEFORCE_NODISCARD size_type count (const key_type &key) const
 统计具有指定键的元素数量
NEFORCE_NODISCARD iterator lower_bound (const key_type &key)
 获取第一个不小于指定键的元素位置
NEFORCE_NODISCARD const_iterator lower_bound (const key_type &key) const
 获取第一个不小于指定键的常量元素位置
NEFORCE_NODISCARD iterator upper_bound (const key_type &key)
 获取第一个大于指定键的元素位置
NEFORCE_NODISCARD const_iterator upper_bound (const key_type &key) const
 获取第一个大于指定键的常量元素位置
NEFORCE_NODISCARD pair< iterator, iteratorequal_range (const key_type &key)
 获取等于指定键的元素范围
NEFORCE_NODISCARD pair< const_iterator, const_iteratorequal_range (const key_type &key) const
 获取等于指定键的常量元素范围
void swap (set &other) noexcept(noexcept(tree_.swap(other.tree_)))
 交换两个set的内容
NEFORCE_NODISCARD bool operator== (const set &rhs) const noexcept(noexcept(tree_==rhs.tree_))
 相等比较操作符
NEFORCE_NODISCARD bool operator< (const set &rhs) const noexcept(noexcept(tree_< rhs.tree_))
 小于比较操作符

详细描述

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
class set< Key, Compare, Alloc >

集合容器

模板参数
Key键类型
Compare键比较函数类型,默认为less<Key>
Alloc分配器类型

set是一种关联容器,存储唯一的键值,每个键在容器中唯一。 元素按照键的顺序自动排序,排序标准由Compare函数对象指定。 支持快速的键查找。底层使用红黑树实现。

在文件 container/set.hpp35 行定义.

构造及析构函数说明

◆ set() [1/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set< Key, Compare, Alloc >::set ( )
inline

默认构造函数

构造一个空set,使用默认的比较函数。

在文件 container/set.hpp71 行定义.

被这些函数引用 operator<(), operator=(), operator=(), operator=(), operator==(), set(), set(), set(), set() , 以及 swap().

◆ set() [2/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set< Key, Compare, Alloc >::set ( const key_compare & comp)
inlineexplicit

构造函数,指定比较函数

参数
comp比较函数对象

在文件 container/set.hpp78 行定义.

◆ set() [3/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set< Key, Compare, Alloc >::set ( const set< Key, Compare, Alloc > & other)
inline

拷贝构造函数

参数
other源set

在文件 container/set.hpp85 行定义.

引用了 set().

◆ set() [4/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set< Key, Compare, Alloc >::set ( set< Key, Compare, Alloc > && other)
inlinenoexcept

移动构造函数

参数
other源set

在文件 container/set.hpp102 行定义.

引用了 is_nothrow_move_constructible_v, move() , 以及 set().

◆ set() [5/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
template<typename Iterator>
set< Key, Compare, Alloc >::set ( Iterator first,
Iterator last )
inline

范围构造函数

模板参数
Iterator迭代器类型
参数
first起始迭代器
last结束迭代器

在文件 container/set.hpp123 行定义.

◆ set() [6/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
template<typename Iterator>
set< Key, Compare, Alloc >::set ( Iterator first,
Iterator last,
const key_compare & comp )
inline

范围构造函数,指定比较函数

模板参数
Iterator迭代器类型
参数
first起始迭代器
last结束迭代器
comp比较函数对象

在文件 container/set.hpp136 行定义.

◆ set() [7/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set< Key, Compare, Alloc >::set ( std::initializer_list< value_type > ilist)
inline

初始化列表构造函数

参数
ilist初始化列表

在文件 container/set.hpp145 行定义.

引用了 begin(), end() , 以及 set().

◆ set() [8/8]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set< Key, Compare, Alloc >::set ( std::initializer_list< value_type > ilist,
const key_compare & comp )
inline

初始化列表构造函数,指定比较函数

参数
ilist初始化列表
comp比较函数对象

在文件 container/set.hpp153 行定义.

引用了 begin(), end() , 以及 set().

成员函数说明

◆ begin()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD iterator set< Key, Compare, Alloc >::begin ( )
inlinenoexcept

获取起始迭代器

返回
指向最小元素的迭代器

在文件 container/set.hpp176 行定义.

被这些函数引用 set() , 以及 set().

◆ cbegin()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD const_iterator set< Key, Compare, Alloc >::cbegin ( ) const
inlinenoexcept

获取常量起始迭代器

返回
指向最小元素的常量迭代器

在文件 container/set.hpp188 行定义.

◆ cend()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD const_iterator set< Key, Compare, Alloc >::cend ( ) const
inlinenoexcept

获取常量结束迭代器

返回
指向最后一个元素之后位置的常量迭代器

在文件 container/set.hpp194 行定义.

◆ count()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD size_type set< Key, Compare, Alloc >::count ( const key_type & key) const
inline

统计具有指定键的元素数量

参数
key要统计的键
返回
匹配的元素数量

在文件 container/set.hpp360 行定义.

◆ crbegin()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD const_reverse_iterator set< Key, Compare, Alloc >::crbegin ( ) const
inlinenoexcept

获取常量反向起始迭代器

返回
指向最大元素的常量反向迭代器

在文件 container/set.hpp212 行定义.

◆ crend()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD const_reverse_iterator set< Key, Compare, Alloc >::crend ( ) const
inlinenoexcept

获取常量反向结束迭代器

返回
指向最小元素之前位置的常量反向迭代器

在文件 container/set.hpp218 行定义.

◆ emplace()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
template<typename... Args>
pair< iterator, bool > set< Key, Compare, Alloc >::emplace ( Args &&... args)
inline

在set中就地构造元素

模板参数
Args构造参数类型
参数
args构造参数
返回
插入结果(迭代器和是否成功)

在文件 container/set.hpp257 行定义.

引用了 forward().

◆ emplace_hint()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
template<typename... Args>
iterator set< Key, Compare, Alloc >::emplace_hint ( iterator position,
Args &&... args )
inline

在提示位置附近就地构造元素

模板参数
Args构造参数类型
参数
position插入位置提示
args构造参数
返回
指向插入元素的迭代器

在文件 container/set.hpp283 行定义.

引用了 forward().

◆ empty()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD bool set< Key, Compare, Alloc >::empty ( ) const
inlinenoexcept

检查是否为空

返回
是否为空

在文件 container/set.hpp236 行定义.

◆ end()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD iterator set< Key, Compare, Alloc >::end ( )
inlinenoexcept

获取结束迭代器

返回
指向最后一个元素之后位置的迭代器

在文件 container/set.hpp182 行定义.

被这些函数引用 set() , 以及 set().

◆ equal_range() [1/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD pair< iterator, iterator > set< Key, Compare, Alloc >::equal_range ( const key_type & key)
inline

获取等于指定键的元素范围

参数
key键值
返回
包含lower_bound和upper_bound的pair

在文件 container/set.hpp395 行定义.

◆ equal_range() [2/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD pair< const_iterator, const_iterator > set< Key, Compare, Alloc >::equal_range ( const key_type & key) const
inline

获取等于指定键的常量元素范围

参数
key键值
返回
包含lower_bound和upper_bound的pair

在文件 container/set.hpp402 行定义.

◆ erase() [1/3]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
size_type set< Key, Compare, Alloc >::erase ( const key_type & key)
inlinenoexcept

删除所有具有指定键的元素

参数
key要删除的键
返回
删除的元素数量

在文件 container/set.hpp327 行定义.

◆ erase() [2/3]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
void set< Key, Compare, Alloc >::erase ( iterator first,
iterator last )
inlinenoexcept

删除指定范围内的元素

参数
first起始迭代器
last结束迭代器

在文件 container/set.hpp334 行定义.

◆ erase() [3/3]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
void set< Key, Compare, Alloc >::erase ( iterator position)
inlinenoexcept

删除指定位置的元素

参数
position要删除的位置

在文件 container/set.hpp320 行定义.

◆ find() [1/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD iterator set< Key, Compare, Alloc >::find ( const key_type & key)
inline

查找具有指定键的元素

参数
key要查找的键
返回
指向第一个匹配元素的迭代器,未找到则返回end()

在文件 container/set.hpp346 行定义.

◆ find() [2/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD const_iterator set< Key, Compare, Alloc >::find ( const key_type & key) const
inline

查找具有指定键的常量元素

参数
key要查找的键
返回
指向第一个匹配元素的常量迭代器,未找到则返回cend()

在文件 container/set.hpp353 行定义.

◆ insert() [1/5]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
pair< iterator, bool > set< Key, Compare, Alloc >::insert ( const value_type & value)
inline

拷贝插入元素

参数
value要插入的值
返回
插入结果(迭代器和是否成功)

在文件 container/set.hpp266 行定义.

被这些函数引用 operator=().

◆ insert() [2/5]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
template<typename Iterator>
void set< Key, Compare, Alloc >::insert ( Iterator first,
Iterator last )
inline

范围插入元素

模板参数
Iterator迭代器类型
参数
first起始迭代器
last结束迭代器

在文件 container/set.hpp312 行定义.

◆ insert() [3/5]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
iterator set< Key, Compare, Alloc >::insert ( iterator position,
const value_type & value )
inline

在提示位置附近拷贝插入元素

参数
position插入位置提示
value要插入的值
返回
指向插入元素的迭代器

在文件 container/set.hpp293 行定义.

◆ insert() [4/5]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
iterator set< Key, Compare, Alloc >::insert ( iterator position,
value_type && value )
inline

在提示位置附近移动插入元素

参数
position插入位置提示
value要插入的值
返回
指向插入元素的迭代器

在文件 container/set.hpp301 行定义.

引用了 move().

◆ insert() [5/5]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
pair< iterator, bool > set< Key, Compare, Alloc >::insert ( value_type && value)
inline

移动插入元素

参数
value要插入的值
返回
插入结果(迭代器和是否成功)

在文件 container/set.hpp273 行定义.

引用了 move().

◆ key_comp()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD key_compare set< Key, Compare, Alloc >::key_comp ( ) const
inlinenoexcept

获取键比较函数对象

返回
键比较函数对象的副本

在文件 container/set.hpp242 行定义.

◆ lower_bound() [1/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD iterator set< Key, Compare, Alloc >::lower_bound ( const key_type & key)
inline

获取第一个不小于指定键的元素位置

参数
key键值
返回
指向第一个不小于key的元素的迭代器

在文件 container/set.hpp367 行定义.

◆ lower_bound() [2/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD const_iterator set< Key, Compare, Alloc >::lower_bound ( const key_type & key) const
inline

获取第一个不小于指定键的常量元素位置

参数
key键值
返回
指向第一个不小于key的元素的常量迭代器

在文件 container/set.hpp374 行定义.

◆ max_size()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD size_type set< Key, Compare, Alloc >::max_size ( ) const
inlinenoexcept

获取最大可能大小

返回
最大元素数量

在文件 container/set.hpp230 行定义.

◆ operator<()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD bool set< Key, Compare, Alloc >::operator< ( const set< Key, Compare, Alloc > & rhs) const
inlinenoexcept

小于比较操作符

参数
rhs右侧set
返回
按字典序比较结果

在文件 container/set.hpp426 行定义.

引用了 set().

◆ operator=() [1/3]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set & set< Key, Compare, Alloc >::operator= ( const set< Key, Compare, Alloc > & other)
inline

拷贝赋值运算符

参数
other源set
返回
自身引用

在文件 container/set.hpp93 行定义.

引用了 set().

◆ operator=() [2/3]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set & set< Key, Compare, Alloc >::operator= ( set< Key, Compare, Alloc > && other)
inlinenoexcept

移动赋值运算符

参数
other源set
返回
自身引用

在文件 container/set.hpp110 行定义.

引用了 is_nothrow_swappable_v , 以及 set().

◆ operator=() [3/3]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
set & set< Key, Compare, Alloc >::operator= ( std::initializer_list< value_type > ilist)
inline

初始化列表赋值运算符

参数
ilist初始化列表
返回
自身引用

在文件 container/set.hpp161 行定义.

引用了 clear(), insert() , 以及 set().

◆ operator==()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD bool set< Key, Compare, Alloc >::operator== ( const set< Key, Compare, Alloc > & rhs) const
inlinenoexcept

相等比较操作符

参数
rhs右侧set
返回
如果两个set大小相等且对应元素相等返回true

在文件 container/set.hpp417 行定义.

引用了 set().

◆ rbegin()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD reverse_iterator set< Key, Compare, Alloc >::rbegin ( )
inlinenoexcept

获取反向起始迭代器

返回
指向最大元素的反向迭代器

在文件 container/set.hpp200 行定义.

◆ rend()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD reverse_iterator set< Key, Compare, Alloc >::rend ( )
inlinenoexcept

获取反向结束迭代器

返回
指向最小元素之前位置的反向迭代器

在文件 container/set.hpp206 行定义.

◆ size()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD size_type set< Key, Compare, Alloc >::size ( ) const
inlinenoexcept

获取元素数量

返回
set中的元素数量

在文件 container/set.hpp224 行定义.

◆ swap()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
void set< Key, Compare, Alloc >::swap ( set< Key, Compare, Alloc > & other)
inlinenoexcept

交换两个set的内容

参数
other要交换的另一个set

在文件 container/set.hpp410 行定义.

引用了 set().

◆ upper_bound() [1/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD iterator set< Key, Compare, Alloc >::upper_bound ( const key_type & key)
inline

获取第一个大于指定键的元素位置

参数
key键值
返回
指向第一个大于key的元素的迭代器

在文件 container/set.hpp381 行定义.

◆ upper_bound() [2/2]

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD const_iterator set< Key, Compare, Alloc >::upper_bound ( const key_type & key) const
inline

获取第一个大于指定键的常量元素位置

参数
key键值
返回
指向第一个大于key的元素的常量迭代器

在文件 container/set.hpp388 行定义.

◆ value_comp()

template<typename Key, typename Compare = less<Key>, typename Alloc = allocator<rb_tree_node<Key>>>
NEFORCE_NODISCARD value_compare set< Key, Compare, Alloc >::value_comp ( ) const
inlinenoexcept

获取值比较函数对象

返回
值比较函数对象的副本

在文件 container/set.hpp248 行定义.


该类的文档由以下文件生成: