24#ifndef PRIORITY_QUEUE_INCLUDED 
   25#define PRIORITY_QUEUE_INCLUDED 
   39#if defined(EXTRA_CODE_FOR_UNIT_TESTING) 
   45class PriorityQueueTest;
 
  101template <
typename T, 
typename Container = std::vector<T>,
 
  102          typename Less = std::less<
typename Container::value_type>,
 
  103          typename Marker = NoopMarker<T>>
 
  110  typedef typename container_type::iterator 
iterator;
 
  158    } 
while (largest != i);
 
  166      size_t parent_idx = 
parent(i);
 
  190                 const Marker &marker = Marker())
 
  194  template <
typename Input_iterator>
 
  196                 Less 
const &less = Less(),
 
  198                 const Marker &marker = Marker())
 
  243    } 
catch (std::bad_alloc 
const &) {
 
  421    } 
catch (std::bad_alloc 
const &) {
 
  432#if defined(EXTRA_CODE_FOR_UNIT_TESTING) 
  433template <
class T, 
class Container, 
class Less, 
class Marker>
 
  439  for (size_type i = 0; i < pq.
size(); i++) {
 
  446template <
class T, 
class Container, 
class Less, 
class Marker>
 
  448    std::stringstream &ss,
 
  453  for (size_type i = 0; i < pq.
size(); i++) {
 
Definition: priority_queue.h:49
 
void operator()(size_t, T *) const
Definition: priority_queue.h:51
 
Implements a priority queue using a vector-based max-heap.
Definition: priority_queue.h:104
 
value_type & operator[](size_type i)
Returns a reference to the i-th element in the underlying container.
Definition: priority_queue.h:350
 
static size_type parent(size_type i)
Definition: priority_queue.h:121
 
Priority_queue(Input_iterator first, Input_iterator beyond, Less const &less=Less(), const allocator_type &alloc=allocator_type(), const Marker &marker=Marker())
Constructs a heap of the objects between first and beyond.
Definition: priority_queue.h:195
 
void increase_key(size_type i, value_type const &x)
Definition: priority_queue.h:181
 
value_type & top()
Returns a reference to the top element of the priority queue.
Definition: priority_queue.h:229
 
size_type capacity() const
Returns the capacity of the internal container.
Definition: priority_queue.h:409
 
void swap(Priority_queue &other)
Swaps the contents of two priority queues.
Definition: priority_queue.h:368
 
void clear()
Clears the priority queue.
Definition: priority_queue.h:403
 
void sort()
Sorts the elements of the priority queue according to the strict partial ordering defined by the obje...
Definition: priority_queue.h:391
 
container_type::allocator_type allocator_type
Definition: priority_queue.h:112
 
Marker m_marker
Definition: priority_queue.h:429
 
void decrease(size_type i, value_type const &x)
Decreases the priority of the element at position i, where the new priority is x.
Definition: priority_queue.h:274
 
void update(size_type i, value_type const &x)
Changes the priority of the element at position i, where the new priority is x.
Definition: priority_queue.h:294
 
static size_type right(size_type i)
Definition: priority_queue.h:132
 
container_type::iterator iterator
Definition: priority_queue.h:110
 
void heapify(size_type i)
Definition: priority_queue.h:161
 
friend class priority_queue_unittest::PriorityQueueTest
Definition: priority_queue.h:114
 
void update(size_type i)
Assumes that the i-th element's value has changed and rebuilds the priority queue.
Definition: priority_queue.h:319
 
void delete_elements()
Clears the priority queue, but deletes all elements first.
Definition: priority_queue.h:406
 
container_type::const_iterator const_iterator
Definition: priority_queue.h:111
 
void reverse_heapify(size_type i)
Definition: priority_queue.h:163
 
bool is_valid() const
Returns true if the priority queue has the heap property.
Definition: priority_queue.h:374
 
container_type::value_type value_type
Definition: priority_queue.h:108
 
static size_type left(size_type i)
Definition: priority_queue.h:127
 
Less less_type
Definition: priority_queue.h:107
 
void increase(size_type i, value_type const &x)
Increases the priority of the element at position i, where the new priority is x.
Definition: priority_queue.h:284
 
container_type::size_type size_type
Definition: priority_queue.h:109
 
iterator begin()
Returns an iterator to the first element of the underlying container.
Definition: priority_queue.h:362
 
Priority_queue(Less const &less=Less(), const allocator_type &alloc=allocator_type(), const Marker &marker=Marker())
Constructs an empty priority queue.
Definition: priority_queue.h:188
 
value_type const & top() const
Returns a const reference to the top element of the priority queue.
Definition: priority_queue.h:223
 
iterator end()
Returns an iterator to the end element of the underlying container.
Definition: priority_queue.h:365
 
value_type const & operator[](size_type i) const
Returns a const reference to the i-th element in the underlying container.
Definition: priority_queue.h:344
 
void decrease(size_type i)
Assumes that the i-th element's value has decreased and rebuilds the priority queue.
Definition: priority_queue.h:313
 
container_type m_container
Definition: priority_queue.h:428
 
void increase(size_type i)
Assumes that the i-th element's value has increased and rebuilds the priority queue.
Definition: priority_queue.h:307
 
Container container_type
Definition: priority_queue.h:106
 
const_iterator end() const
Returns a const iterator to the end element of the underlying container.
Definition: priority_queue.h:359
 
void decrease_key(size_type i, value_type const &x)
Definition: priority_queue.h:175
 
void remove(size_type i)
Removes the element at position i from the priority queue.
Definition: priority_queue.h:256
 
bool reserve(size_type n)
Reserves space for array elements.
Definition: priority_queue.h:417
 
bool empty() const
Returns true if the priority queue is empty.
Definition: priority_queue.h:341
 
void pop()
Pops the top-most element in the priority queue.
Definition: priority_queue.h:253
 
size_type size() const
Returns the number of elements of the priority queue.
Definition: priority_queue.h:338
 
void update_top()
Assumes that the top element's value has changed and rebuilds the priority queue.
Definition: priority_queue.h:332
 
void assign(const container_type &container)
Constructs a heap based on input argument.
Definition: priority_queue.h:204
 
void heapify(size_type i, size_type last)
Definition: priority_queue.h:136
 
bool push(value_type const &x)
Inserts an element in the priority queue.
Definition: priority_queue.h:240
 
void build_heap()
Constructs a heap based on container contents.
Definition: priority_queue.h:213
 
Less Base
Definition: priority_queue.h:118
 
const_iterator begin() const
Returns a const iterator to the first element of the underlying container.
Definition: priority_queue.h:356
 
ostream & operator<<(ostream &os, const Datetime &)
Definition: logger.cc:35
 
#define T
Definition: jit_executor_value.cc:373
 
uint16_t value_type
Definition: vt100.h:184
 
Definition: atomics_array.h:39
 
Definition: priority_queue.h:44
 
static mysql_service_status_t flush(reference_caching_cache cache) noexcept
Definition: component.cc:114
 
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:86
 
static void swap(String &a, String &b) noexcept
Definition: sql_string.h:650
 
void delete_container_pointers(Container_type &container)
Clears a container, but deletes all objects that the elements point to first.
Definition: template_utils.h:44
 
int n
Definition: xcom_base.cc:509