[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
BucketQueue< ValueType, Ascending > Class Template Reference |
Priority queue implemented using bucket sort. More...
#include <vigra/priority_queue.hxx>
Public Member Functions | |
BucketQueue (size_type bucket_count=256) | |
Create bucket queue with. More... | |
bool | empty () const |
Queue contains no elements. Equivalent to size() == 0 . | |
priority_type | maxIndex () const |
Maximum index (i.e. priority) allowed in this queue. Equivalent to bucket_count - 1 . | |
void | pop () |
Remove the current top element. | |
void | push (value_type const &v, priority_type priority) |
Insert new element. More... | |
size_type | size () const |
Number of elements in this queue. | |
const_reference | top () const |
The current top element. | |
priority_type | topPriority () const |
Priority of the current top element. | |
Priority queue implemented using bucket sort.
This template implements functionality similar to std::priority_queue
, but uses a more efficient algorithm based on bucket sort. It can be used when all priorities are positive integers in a given range (typically, 0...255). By default, BucketQueue<ValueType>
sorts the elements in descending order, i.e. like in std::priority_queue
the largest element has highest priority. An ascending queue can be specified as BucketQueue<ValueType, true>
. Elements with equal priorities are returned in a first-in first-out fashion.
The main difference to std::priority_queue
is the function push
which explicitly takes the priority of the element to be added as a second argument. This allows optimization of ValueType
: since the bucket uniquely determines an element's priority, there is no need for ValueType
to store redundant priority information. If compatibility to std::priority_queue
is more important, use vigra::MappedBucketQueue.
#include <vigra/bucket_queue.hxx>
Namespace: vigra
BucketQueue | ( | size_type | bucket_count = 256 | ) |
Create bucket queue with.
[0, ..., bucket_count-1]
. void push | ( | value_type const & | v, |
priority_type | priority | ||
) |
Insert new element.
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |
html generated using doxygen and Python
|