Arene Base
Fundamental Utilities For Safety Critical C++
Loading...
Searching...
No Matches
arene::base::intrusive::priority_queue< T, Compare, Tag > Class Template Reference

The intrusive priority_queue. By default, the priority_queue is building a max heap where the element at the top is always the largest. To build a min heap, pass a std::greater<> as the comparator. More...

Public Types

using const_reference = T const&
 const reference type
 
using reference = T&
 reference type
 
using size_type = std::size_t
 size type
 
using tag = Tag
 tag type
 
using value_compare = Compare
 value comparison type
 
using value_type = T
 value type
 

Public Member Functions

constexpr priority_queue () noexcept=default
 Construct an empty priority_queue.
 
constexpr priority_queue (priority_queue &&other) noexcept
 Move construct a priority_queue from another priority_queue. The other priority_queue will be empty after the move.
 
 priority_queue (priority_queue const &)=delete
 Deleted copy constructor.
 
 ~priority_queue ()=default
 Destructor.
 
constexpr auto empty () const noexcept -> bool
 Check whether the priority_queue is empty.
 
constexpr void erase (reference node) noexcept
 Erase a specific node from the priority_queue.
 
constexpr auto operator!= (priority_queue const &) const -> bool=delete
 deleted equality operator
 
constexpr auto operator= (priority_queue &&other) noexcept -> priority_queue &
 Move assign a priority_queue from another priority_queue. The other priority_queue will be empty after the move.
 
auto operator= (priority_queue const &) -> priority_queue &=delete
 Deleted copy constructor.
 
constexpr auto operator== (priority_queue const &) const -> bool=delete
 deleted equality operator
 
constexpr void pop () noexcept
 Pop the top element from the priority_queue.
 
constexpr void push (reference value) noexcept
 Push an element to the priority_queue.
 
constexpr auto size () const noexcept -> size_type
 Return the number of elements in the priority_queue.
 
constexpr void swap (priority_queue &other) noexcept
 Swap the contents of two priority queues.
 
constexpr auto top () const noexcept -> T &
 Return a reference to the top element of the priority_queue.
 

Detailed Description

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
class arene::base::intrusive::priority_queue< T, Compare, Tag >

The intrusive priority_queue. By default, the priority_queue is building a max heap where the element at the top is always the largest. To build a min heap, pass a std::greater<> as the comparator.

Template Parameters
TThe type of the element.
CompareThe type of the comparator. Default to std::less<>
TagThe tag of the priority queue to work on. Default to default_tag.

Member Typedef Documentation

◆ const_reference

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
using arene::base::intrusive::priority_queue< T, Compare, Tag >::const_reference = T const&

const reference type

◆ reference

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
using arene::base::intrusive::priority_queue< T, Compare, Tag >::reference = T&

reference type

◆ size_type

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
using arene::base::intrusive::priority_queue< T, Compare, Tag >::size_type = std::size_t

size type

◆ tag

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
using arene::base::intrusive::priority_queue< T, Compare, Tag >::tag = Tag

tag type

◆ value_compare

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
using arene::base::intrusive::priority_queue< T, Compare, Tag >::value_compare = Compare

value comparison type

◆ value_type

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
using arene::base::intrusive::priority_queue< T, Compare, Tag >::value_type = T

value type

Constructor & Destructor Documentation

◆ priority_queue() [1/3]

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
arene::base::intrusive::priority_queue< T, Compare, Tag >::priority_queue ( )
explicitconstexprdefaultnoexcept

Construct an empty priority_queue.

◆ priority_queue() [2/3]

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
arene::base::intrusive::priority_queue< T, Compare, Tag >::priority_queue ( priority_queue< T, Compare, Tag > && other)
inlineconstexprnoexcept

Move construct a priority_queue from another priority_queue. The other priority_queue will be empty after the move.

Parameters
otherThe other priority_queue

◆ priority_queue() [3/3]

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
arene::base::intrusive::priority_queue< T, Compare, Tag >::priority_queue ( priority_queue< T, Compare, Tag > const & )
delete

Deleted copy constructor.

Intrusive priority queue does not support copy

◆ ~priority_queue()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
arene::base::intrusive::priority_queue< T, Compare, Tag >::~priority_queue ( )
default

Destructor.

Member Function Documentation

◆ empty()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
auto arene::base::intrusive::priority_queue< T, Compare, Tag >::empty ( ) const -> bool
inlineconstexprnoexcept

Check whether the priority_queue is empty.

Returns
True if the priority_queue is empty, false otherwise.

◆ erase()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
void arene::base::intrusive::priority_queue< T, Compare, Tag >::erase ( reference node)
inlineconstexprnoexcept

Erase a specific node from the priority_queue.

Precondition
The node must be in the priority_queue.
The priority_queue must not be empty.
Parameters
nodeThe node to be erased.

◆ operator!=()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
auto arene::base::intrusive::priority_queue< T, Compare, Tag >::operator!= ( priority_queue< T, Compare, Tag > const & ) const -> bool=delete
constexprdelete

deleted equality operator

Intrusive priority queue does not support equality comparison as the definition of equality is not clear for intrusive containers.

◆ operator=() [1/2]

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
auto arene::base::intrusive::priority_queue< T, Compare, Tag >::operator= ( priority_queue< T, Compare, Tag > && other) -> priority_queue&
inlineconstexprnoexcept

Move assign a priority_queue from another priority_queue. The other priority_queue will be empty after the move.

Parameters
otherThe other priority_queue

◆ operator=() [2/2]

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
auto arene::base::intrusive::priority_queue< T, Compare, Tag >::operator= ( priority_queue< T, Compare, Tag > const & ) -> priority_queue &=delete
delete

Deleted copy constructor.

Intrusive priority queue does not support copy

◆ operator==()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
auto arene::base::intrusive::priority_queue< T, Compare, Tag >::operator== ( priority_queue< T, Compare, Tag > const & ) const -> bool=delete
constexprdelete

deleted equality operator

Intrusive priority queue does not support equality comparison as the definition of equality is not clear for intrusive containers.

◆ pop()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
void arene::base::intrusive::priority_queue< T, Compare, Tag >::pop ( )
inlineconstexprnoexcept

Pop the top element from the priority_queue.

Precondition
The priority_queue must not be empty.

◆ push()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
void arene::base::intrusive::priority_queue< T, Compare, Tag >::push ( reference value)
inlineconstexprnoexcept

Push an element to the priority_queue.

Precondition
The element must not already be in a priority_queue.
Parameters
valueThe element to be pushed.

◆ size()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
auto arene::base::intrusive::priority_queue< T, Compare, Tag >::size ( ) const -> size_type
inlineconstexprnoexcept

Return the number of elements in the priority_queue.

Returns
The number of elements in the priority_queue.

◆ swap()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
void arene::base::intrusive::priority_queue< T, Compare, Tag >::swap ( priority_queue< T, Compare, Tag > & other)
inlineconstexprnoexcept

Swap the contents of two priority queues.

Parameters
otherThe queue to swap with.

◆ top()

template<typename T, typename Compare = std::less<>, typename Tag = detail::default_tag>
auto arene::base::intrusive::priority_queue< T, Compare, Tag >::top ( ) const -> T&
inlineconstexprnoexcept

Return a reference to the top element of the priority_queue.

Precondition
The queue must not be empty.
Returns
Reference to the top element.

The documentation for this class was generated from the following files: