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

优先队列容器适配器 更多...

#include <priority_queue.hpp>

类 priority_queue< T, Sequence, Compare > 继承关系图:
[图例]

Public 类型

using value_type = typename Sequence::value_type
 值类型
using difference_type = typename Sequence::difference_type
 差值类型
using size_type = typename Sequence::size_type
 大小类型
using reference = typename Sequence::reference
 引用类型
using const_reference = typename Sequence::const_reference
 常量引用类型

Public 成员函数

 priority_queue ()=default
 默认构造函数
 priority_queue (const Compare &comp) noexcept(is_nothrow_default_constructible_v< Sequence > &&is_nothrow_copy_constructible_v< Compare >)
 构造函数,指定比较函数
 priority_queue (const Compare &comp, const Sequence &seq)
 构造函数,指定比较函数和底层容器副本
 priority_queue (const Compare &comp, Sequence &&seq) noexcept(is_nothrow_move_constructible_v< Sequence > &&is_nothrow_copy_constructible_v< Compare >)
 构造函数,指定比较函数和移动的底层容器
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
 priority_queue (Iterator first, Iterator last, const Sequence &seq)
 范围构造函数,指定底层容器副本
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
 priority_queue (Iterator first, Iterator last)
 范围构造函数
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
 priority_queue (Iterator first, Iterator last, const Compare &comp)
 范围构造函数,指定比较函数
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
 priority_queue (Iterator first, Iterator last, const Compare &comp, const Sequence &seq)
 范围构造函数,指定比较函数和底层容器副本
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
 priority_queue (Iterator first, Iterator last, const Compare &comp, Sequence &&seq)
 范围构造函数,指定比较函数和移动的底层容器
NEFORCE_NODISCARD bool empty () const noexcept(noexcept(_NEFORCE declval< Sequence >().empty()))
 检查优先队列是否为空
NEFORCE_NODISCARD size_type size () const noexcept(noexcept(_NEFORCE declval< Sequence >().size()))
 获取优先队列大小
NEFORCE_NODISCARD const_reference top () const noexcept(noexcept(_NEFORCE declval< Sequence >().front()))
 访问优先级最高的元素
void push (const value_type &value)
 插入元素(拷贝版本)
void push (value_type &&value)
 插入元素(移动版本)
void pop ()
 移除优先级最高的元素
template<typename... Args>
void emplace (Args &&... args)
 在优先队列中就地构造元素
void swap (priority_queue &other) noexcept(is_nothrow_swappable_v< Sequence > &&is_nothrow_swappable_v< Compare >)
 交换两个优先队列的内容
NEFORCE_NODISCARD bool operator== (const priority_queue &rhs) const noexcept(noexcept(pair_.value==rhs.pair_.value))
 相等比较操作符
NEFORCE_NODISCARD bool operator< (const priority_queue &rhs) const noexcept(noexcept(pair_.value< rhs.pair_.value))
 小于比较操作符
Public 成员函数 继承自 icollector< T >
NEFORCE_NODISCARD constexpr decltype(auto) size () const noexcept(noexcept(derived().size()))
 获取集合大小
NEFORCE_NODISCARD constexpr bool empty () const noexcept(noexcept(derived().empty()))
 检查集合是否为空
Public 成员函数 继承自 icomparable< T >
NEFORCE_NODISCARD constexpr bool operator== (const T &rhs) const noexcept(noexcept(derived()==rhs))
 相等比较运算符
NEFORCE_NODISCARD constexpr bool operator!= (const T &rhs) const noexcept(noexcept(!(*this==rhs)))
 不等比较运算符
NEFORCE_NODISCARD constexpr bool operator< (const T &rhs) const noexcept(noexcept(derived()< rhs))
 小于比较运算符
NEFORCE_NODISCARD constexpr bool operator> (const T &rhs) const noexcept(noexcept(rhs< derived()))
 大于比较运算符
NEFORCE_NODISCARD constexpr bool operator<= (const T &rhs) const noexcept(noexcept(!(derived() > rhs)))
 小于等于比较运算符
NEFORCE_NODISCARD constexpr bool operator>= (const T &rhs) const noexcept(noexcept(!(derived()< rhs)))
 大于等于比较运算符

详细描述

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
class priority_queue< T, Sequence, Compare >

优先队列容器适配器

模板参数
T元素类型
Sequence底层容器类型,默认为vector<T>
Compare比较函数对象类型,默认为less<T>

优先队列是一种容器适配器,提供常数时间访问最大/最小元素, 对数时间插入和删除。元素按照严格弱序(strict weak ordering) 确定的优先级顺序出队。默认使用最大堆(less)实现,即top()返回最大元素。 通过指定不同的Compare可改变优先级顺序。

在文件 priority_queue.hpp36 行定义.

构造及析构函数说明

◆ priority_queue() [1/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
priority_queue< T, Sequence, Compare >::priority_queue ( )
default

默认构造函数

构造一个空的优先队列,使用默认比较函数。

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

◆ priority_queue() [2/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
priority_queue< T, Sequence, Compare >::priority_queue ( const Compare & comp)
inlineexplicitnoexcept

构造函数,指定比较函数

参数
comp比较函数对象

在文件 priority_queue.hpp71 行定义.

引用了 is_nothrow_copy_constructible_v , 以及 is_nothrow_default_constructible_v.

◆ priority_queue() [3/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
priority_queue< T, Sequence, Compare >::priority_queue ( const Compare & comp,
const Sequence & seq )
inline

构造函数,指定比较函数和底层容器副本

参数
comp比较函数对象
seq底层容器副本

在文件 priority_queue.hpp80 行定义.

◆ priority_queue() [4/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
priority_queue< T, Sequence, Compare >::priority_queue ( const Compare & comp,
Sequence && seq )
inlinenoexcept

构造函数,指定比较函数和移动的底层容器

参数
comp比较函数对象
seq要移动的底层容器

在文件 priority_queue.hpp90 行定义.

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

◆ priority_queue() [5/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
priority_queue< T, Sequence, Compare >::priority_queue ( Iterator first,
Iterator last,
const Sequence & seq )
inline

范围构造函数,指定底层容器副本

模板参数
Iterator迭代器类型
参数
first起始迭代器
last结束迭代器
seq底层容器副本

在文件 priority_queue.hpp104 行定义.

◆ priority_queue() [6/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
priority_queue< T, Sequence, Compare >::priority_queue ( Iterator first,
Iterator last )
inline

范围构造函数

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

在文件 priority_queue.hpp117 行定义.

◆ priority_queue() [7/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
priority_queue< T, Sequence, Compare >::priority_queue ( Iterator first,
Iterator last,
const Compare & comp )
inline

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

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

在文件 priority_queue.hpp130 行定义.

◆ priority_queue() [8/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
priority_queue< T, Sequence, Compare >::priority_queue ( Iterator first,
Iterator last,
const Compare & comp,
const Sequence & seq )
inline

范围构造函数,指定比较函数和底层容器副本

模板参数
Iterator迭代器类型
参数
first起始迭代器
last结束迭代器
comp比较函数对象
seq底层容器副本

在文件 priority_queue.hpp144 行定义.

◆ priority_queue() [9/9]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
priority_queue< T, Sequence, Compare >::priority_queue ( Iterator first,
Iterator last,
const Compare & comp,
Sequence && seq )
inline

范围构造函数,指定比较函数和移动的底层容器

模板参数
Iterator迭代器类型
参数
first起始迭代器
last结束迭代器
comp比较函数对象
seq要移动的底层容器

在文件 priority_queue.hpp159 行定义.

引用了 move().

成员函数说明

◆ emplace()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
template<typename... Args>
void priority_queue< T, Sequence, Compare >::emplace ( Args &&... args)
inline

在优先队列中就地构造元素

模板参数
Args构造参数类型
参数
args构造参数

在底层容器末尾就地构造元素,并维护堆性质。

在文件 priority_queue.hpp231 行定义.

引用了 forward() , 以及 push_heap().

被这些函数引用 get_current_task_group().

◆ empty()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
NEFORCE_NODISCARD bool priority_queue< T, Sequence, Compare >::empty ( ) const
inlinenoexcept

检查优先队列是否为空

返回
队列为空返回true,否则返回false

在文件 priority_queue.hpp169 行定义.

引用了 declval() , 以及 empty().

被这些函数引用 empty().

◆ operator<()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
NEFORCE_NODISCARD bool priority_queue< T, Sequence, Compare >::operator< ( const priority_queue< T, Sequence, Compare > & rhs) const
inlinenoexcept

小于比较操作符

参数
rhs右侧优先队列
返回
按字典序比较底层容器的结果
注解
此比较基于底层容器的元素顺序,而非优先级顺序。

在文件 priority_queue.hpp261 行定义.

引用了 priority_queue().

◆ operator==()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
NEFORCE_NODISCARD bool priority_queue< T, Sequence, Compare >::operator== ( const priority_queue< T, Sequence, Compare > & rhs) const
inlinenoexcept

相等比较操作符

参数
rhs右侧优先队列
返回
如果两个优先队列的底层容器相等返回true
注解
此比较基于底层容器的元素顺序,而非优先级顺序。

在文件 priority_queue.hpp250 行定义.

引用了 priority_queue().

◆ pop()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
void priority_queue< T, Sequence, Compare >::pop ( )
inline

移除优先级最高的元素

删除堆顶元素,并维护堆性质。

在文件 priority_queue.hpp218 行定义.

引用了 pop_heap().

◆ push() [1/2]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
void priority_queue< T, Sequence, Compare >::push ( const value_type & value)
inline

插入元素(拷贝版本)

参数
value要插入的值

将元素添加到优先队列中,并维护堆性质。

在文件 priority_queue.hpp197 行定义.

引用了 push_heap().

◆ push() [2/2]

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
void priority_queue< T, Sequence, Compare >::push ( value_type && value)
inline

插入元素(移动版本)

参数
value要插入的值

将元素移动到优先队列中,并维护堆性质。

在文件 priority_queue.hpp208 行定义.

引用了 move() , 以及 push_heap().

◆ size()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
NEFORCE_NODISCARD size_type priority_queue< T, Sequence, Compare >::size ( ) const
inlinenoexcept

获取优先队列大小

返回
队列中的元素数量

在文件 priority_queue.hpp177 行定义.

引用了 declval() , 以及 size().

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

◆ swap()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
void priority_queue< T, Sequence, Compare >::swap ( priority_queue< T, Sequence, Compare > & other)
inlinenoexcept

交换两个优先队列的内容

参数
other要交换的另一个优先队列

在文件 priority_queue.hpp240 行定义.

引用了 is_nothrow_swappable_v , 以及 priority_queue().

◆ top()

template<typename T, typename Sequence = vector<T>, typename Compare = less<typename Sequence::value_type>>
NEFORCE_NODISCARD const_reference priority_queue< T, Sequence, Compare >::top ( ) const
inlinenoexcept

访问优先级最高的元素

返回
优先级最高元素的常量引用

返回堆顶元素,即根据Compare确定的优先级最高的元素。

在文件 priority_queue.hpp187 行定义.

引用了 declval().


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