12template <
typename T,
typename P = std::less<T>>
28 bool empty()
const {
return c.empty(); }
34 const T &
top()
const {
return c.front(); }
39 template<
class... Args >
40 void emplace( Args&&... args ) {
c.emplace_back( std::forward<Args>(args)... ); onPush_(); }
43 void pop() { std::pop_heap(
c.begin(),
c.end(), pred_ );
c.pop_back(); }
50 void onPush_() { std::push_heap(
c.begin(),
c.end(), pred_ ); };
56template <
typename T,
typename P>
60 std::make_heap(
c.begin(),
c.end(), pred_ );
#define MR_NO_UNIQUE_ADDRESS
Definition MRMacros.h:37
#define MR_TIMER
Definition MRTimer.h:53
similar to std::priority_queue, but with ability to access underlying vector to custom modify its ele...
Definition MRPriorityQueue.h:14
void push(const value_type &value)
inserts element in the queue
Definition MRPriorityQueue.h:37
bool empty() const
checks if the queue has no elements
Definition MRPriorityQueue.h:28
void emplace(Args &&... args)
Definition MRPriorityQueue.h:40
T value_type
Definition MRPriorityQueue.h:16
Container c
Definition MRPriorityQueue.h:47
typename Container::size_type size_type
Definition MRPriorityQueue.h:18
PriorityQueue()
constructs empty queue
Definition MRPriorityQueue.h:21
size_type size() const
returns the number of elements
Definition MRPriorityQueue.h:31
void push(value_type &&value)
Definition MRPriorityQueue.h:38
void pop()
removes the top element from the priority queue
Definition MRPriorityQueue.h:43
std::vector< T > Container
Definition MRPriorityQueue.h:17
PriorityQueue(const P &pred)
Definition MRPriorityQueue.h:22
const T & top() const
accesses the top element
Definition MRPriorityQueue.h:34