Templatized interface for a priority queue. More...
#include <map_based_queue.h>
Public Member Functions | |
void | enqueue (const double priority, item_t item) |
Add a new item to the queue with a set priority. More... | |
item_t & | front () |
Return the item at the front of the queue. More... | |
bool | isEmpty () |
Check to see if there is anything in the queue. More... | |
MapBasedQueue (bool reset_bins=true) | |
Default Constructor. More... | |
void | pop () |
Remove (and destroy) the item at the front of the queue. More... | |
virtual void | reset () |
Clear the queue. More... | |
Protected Types | |
using | ItemMap = std::map< double, std::vector< item_t >> |
using | ItemMapIterator = typename ItemMap::iterator |
Protected Attributes | |
ItemMap | item_bins_ |
unsigned int | item_count_ |
ItemMapIterator | iter_ |
ItemMapIterator | last_insert_iter_ |
bool | reset_bins_ |
Templatized interface for a priority queue.
This is faster than the std::priority_queue implementation in certain cases because iterating does not require resorting after every element is examined. Based on https://github.com/ros-planning/navigation/pull/525 The relative speed of this against the priority queue depends how many items with each priority are inserted into the queue.
One additional speed up depends on the patterns of priorities during each iteration of the queue. If the same priorities are inserted into the queue on every iteration, then it is quicker to set reset_bins = false, such that the priority bins are not reset and will not have to be recreated on each iteration.
Definition at line 61 of file map_based_queue.h.
|
protected |
Definition at line 161 of file map_based_queue.h.
|
protected |
Definition at line 162 of file map_based_queue.h.
|
inlineexplicit |
Default Constructor.
Definition at line 67 of file map_based_queue.h.
|
inline |
Add a new item to the queue with a set priority.
priority | Priority of the item |
item | Payload item |
Definition at line 90 of file map_based_queue.h.
|
inline |
Return the item at the front of the queue.
Definition at line 135 of file map_based_queue.h.
|
inline |
Check to see if there is anything in the queue.
Must be called prior to front/pop.
Definition at line 126 of file map_based_queue.h.
|
inline |
Remove (and destroy) the item at the front of the queue.
Definition at line 148 of file map_based_queue.h.
|
inlinevirtual |
Clear the queue.
Reimplemented in costmap_queue::CostmapQueue.
Definition at line 75 of file map_based_queue.h.
|
protected |
Definition at line 166 of file map_based_queue.h.
|
protected |
Definition at line 167 of file map_based_queue.h.
|
protected |
Definition at line 168 of file map_based_queue.h.
|
protected |
Definition at line 169 of file map_based_queue.h.
|
protected |
Definition at line 164 of file map_based_queue.h.