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

多重集合容器 更多...

#include <multiset.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 成员函数

 multiset ()
 默认构造函数
 multiset (const key_compare &comp)
 构造函数,指定比较函数
 multiset (const multiset &other)
 拷贝构造函数
multisetoperator= (const multiset &other)
 拷贝赋值运算符
 multiset (multiset &&other) noexcept(is_nothrow_move_constructible_v< base_type >)
 移动构造函数
multisetoperator= (multiset &&other) noexcept(is_nothrow_move_assignable_v< base_type >)
 移动赋值运算符
template<typename Iterator>
 multiset (Iterator first, Iterator last)
 范围构造函数
template<typename Iterator>
 multiset (Iterator first, Iterator last, const key_compare &comp)
 范围构造函数,指定比较函数
 multiset (std::initializer_list< value_type > ilist)
 初始化列表构造函数
 multiset (std::initializer_list< value_type > ilist, const key_compare &comp)
 初始化列表构造函数,指定比较函数
multisetoperator= (std::initializer_list< value_type > ilist)
 初始化列表赋值运算符
 ~multiset ()=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>
iterator emplace (Args &&... args)
 在multiset中就地构造元素
iterator insert (const value_type &value)
 拷贝插入元素
iterator 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()))
 清空multiset
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 (multiset &other) noexcept(is_nothrow_swappable_v< base_type >)
 交换两个multiset的内容
NEFORCE_NODISCARD bool operator== (const multiset &rhs) const noexcept(noexcept(tree_==rhs.tree_))
 相等比较操作符
NEFORCE_NODISCARD bool operator< (const multiset &rhs) const noexcept(noexcept(tree_< rhs.tree_))
 小于比较操作符

详细描述

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

多重集合容器

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

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

在文件 multiset.hpp35 行定义.

构造及析构函数说明

◆ multiset() [1/8]

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

默认构造函数

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

在文件 multiset.hpp71 行定义.

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

◆ multiset() [2/8]

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

构造函数,指定比较函数

参数
comp比较函数对象

在文件 multiset.hpp78 行定义.

◆ multiset() [3/8]

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

拷贝构造函数

参数
other源multiset

在文件 multiset.hpp85 行定义.

引用了 multiset().

◆ multiset() [4/8]

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

移动构造函数

参数
other源multiset

在文件 multiset.hpp102 行定义.

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

◆ multiset() [5/8]

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

范围构造函数

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

在文件 multiset.hpp122 行定义.

◆ multiset() [6/8]

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

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

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

在文件 multiset.hpp135 行定义.

◆ multiset() [7/8]

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

初始化列表构造函数

参数
ilist初始化列表

在文件 multiset.hpp144 行定义.

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

◆ multiset() [8/8]

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

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

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

在文件 multiset.hpp152 行定义.

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

成员函数说明

◆ begin()

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

获取起始迭代器

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

在文件 multiset.hpp175 行定义.

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

◆ cbegin()

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

获取常量起始迭代器

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

在文件 multiset.hpp187 行定义.

◆ cend()

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

获取常量结束迭代器

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

在文件 multiset.hpp193 行定义.

◆ count()

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

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

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

在文件 multiset.hpp359 行定义.

◆ crbegin()

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

获取常量反向起始迭代器

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

在文件 multiset.hpp211 行定义.

◆ crend()

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

获取常量反向结束迭代器

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

在文件 multiset.hpp217 行定义.

◆ emplace()

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

在multiset中就地构造元素

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

在文件 multiset.hpp256 行定义.

引用了 forward().

◆ emplace_hint()

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

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

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

在文件 multiset.hpp282 行定义.

引用了 forward().

◆ empty()

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

检查是否为空

返回
是否为空

在文件 multiset.hpp235 行定义.

◆ end()

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

获取结束迭代器

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

在文件 multiset.hpp181 行定义.

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

◆ equal_range() [1/2]

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

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

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

在文件 multiset.hpp394 行定义.

◆ 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 > multiset< Key, Compare, Alloc >::equal_range ( const key_type & key) const
inline

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

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

在文件 multiset.hpp401 行定义.

◆ erase() [1/3]

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

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

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

在文件 multiset.hpp326 行定义.

◆ erase() [2/3]

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

删除指定范围内的元素

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

在文件 multiset.hpp333 行定义.

◆ erase() [3/3]

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

删除指定位置的元素

参数
position要删除的位置

在文件 multiset.hpp319 行定义.

◆ find() [1/2]

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

查找具有指定键的元素

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

在文件 multiset.hpp345 行定义.

◆ find() [2/2]

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

查找具有指定键的元素(常量版本)

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

在文件 multiset.hpp352 行定义.

◆ insert() [1/5]

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

拷贝插入元素

参数
value要插入的值
返回
指向插入元素的迭代器

在文件 multiset.hpp265 行定义.

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

◆ insert() [2/5]

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

范围插入元素

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

在文件 multiset.hpp311 行定义.

◆ insert() [3/5]

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

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

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

在文件 multiset.hpp292 行定义.

◆ insert() [4/5]

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

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

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

在文件 multiset.hpp300 行定义.

引用了 move().

◆ insert() [5/5]

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

移动插入元素

参数
value要插入的值
返回
指向插入元素的迭代器

在文件 multiset.hpp272 行定义.

引用了 move().

◆ key_comp()

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

获取键比较函数对象

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

在文件 multiset.hpp241 行定义.

◆ lower_bound() [1/2]

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

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

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

在文件 multiset.hpp366 行定义.

◆ lower_bound() [2/2]

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

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

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

在文件 multiset.hpp373 行定义.

◆ max_size()

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

获取最大可能大小

返回
最大元素数量

在文件 multiset.hpp229 行定义.

◆ operator<()

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

小于比较操作符

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

在文件 multiset.hpp425 行定义.

引用了 multiset().

◆ operator=() [1/3]

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

拷贝赋值运算符

参数
other源multiset
返回
自身引用

在文件 multiset.hpp93 行定义.

引用了 multiset().

◆ operator=() [2/3]

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

移动赋值运算符

参数
other源multiset
返回
自身引用

在文件 multiset.hpp110 行定义.

引用了 is_nothrow_move_assignable_v, move() , 以及 multiset().

◆ operator=() [3/3]

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

初始化列表赋值运算符

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

在文件 multiset.hpp160 行定义.

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

◆ operator==()

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

相等比较操作符

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

在文件 multiset.hpp416 行定义.

引用了 multiset().

◆ rbegin()

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

获取反向起始迭代器

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

在文件 multiset.hpp199 行定义.

◆ rend()

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

获取反向结束迭代器

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

在文件 multiset.hpp205 行定义.

◆ size()

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

获取元素数量

返回
multiset中的元素数量

在文件 multiset.hpp223 行定义.

◆ swap()

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

交换两个multiset的内容

参数
other要交换的另一个multiset

在文件 multiset.hpp409 行定义.

引用了 is_nothrow_swappable_v , 以及 multiset().

◆ upper_bound() [1/2]

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

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

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

在文件 multiset.hpp380 行定义.

◆ upper_bound() [2/2]

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

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

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

在文件 multiset.hpp387 行定义.

◆ value_comp()

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

获取值比较函数对象

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

在文件 multiset.hpp247 行定义.


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