Radix heap data structure implementation. More...
#include <ogdf/basic/heap/RadixHeap.h>
Public Member Functions | |
RadixHeap () | |
Creates empty heap. | |
~RadixHeap () | |
Destructs the heap. | |
bool | empty () const |
Checks whether the heap is empty. | |
V | pop () |
Removes the top element from the heap and returns its value. | |
RadixHeapNode< V, P > * | push (const V &value, const P &priority) |
Inserts a new node with given value and priority into a heap. | |
std::size_t | size () const |
Number of elements contained within the heap. | |
Private Types | |
using | Bucket = RadixHeapNode< V, P > * |
Private Member Functions | |
void | insert (RadixHeapNode< V, P > *heapNode) |
Buckets with values. | |
Static Private Member Functions | |
template<typename T > | |
static std::size_t | msbSet (T mask) |
Returns most significant bit set on given mask. | |
Private Attributes | |
P | m_bucketMask |
Priority of the lowest element so far. | |
std::array< Bucket, BITS+1 > | m_buckets |
Mask describing state of buckets (for fast lookup). | |
P | m_minimum |
Number of elements. | |
std::size_t | m_size |
Static Private Attributes | |
static constexpr std::size_t | BITS = sizeof(P) * 8 |
Radix heap data structure implementation.
It is just a simple implementation of the idea sketched here: http://ssp.impulsetrain.com/radix-heap.html
To achieve best performance it also uses low-level word functions where avaliable.
V | Denotes type of values of inserted elements. |
P | Denotes type of integral priorities of inserted elements. |
Definition at line 69 of file RadixHeap.h.
|
private |
Definition at line 101 of file RadixHeap.h.
ogdf::RadixHeap< V, P >::RadixHeap | ( | ) |
Creates empty heap.
Definition at line 142 of file RadixHeap.h.
Destructs the heap.
Definition at line 147 of file RadixHeap.h.
Checks whether the heap is empty.
Definition at line 98 of file RadixHeap.h.
|
inlineprivate |
Buckets with values.
Inserts heapNode
to the appropriate bucket.
Definition at line 226 of file RadixHeap.h.
|
inlinestaticprivate |
Returns most significant bit set on given mask.
Definition at line 115 of file RadixHeap.h.
V ogdf::RadixHeap< V, P >::pop | ( | ) |
Removes the top element from the heap and returns its value.
Behaviour of this function is undefined if the heap is empty.
Definition at line 168 of file RadixHeap.h.
RadixHeapNode< V, P > * ogdf::RadixHeap< V, P >::push | ( | const V & | value, |
const P & | priority | ||
) |
Inserts a new node with given value
and priority
into a heap.
value | A value of inserted element. |
priority | A priority of inserted element. |
Definition at line 159 of file RadixHeap.h.
|
inline |
Number of elements contained within the heap.
Definition at line 95 of file RadixHeap.h.
|
staticconstexprprivate |
Definition at line 102 of file RadixHeap.h.
Priority of the lowest element so far.
Definition at line 107 of file RadixHeap.h.
|
private |
Mask describing state of buckets (for fast lookup).
Definition at line 108 of file RadixHeap.h.
Number of elements.
Definition at line 106 of file RadixHeap.h.
|
private |
Definition at line 104 of file RadixHeap.h.