31#ifndef ETL_PRIORITY_QUEUE_INCLUDED
32#define ETL_PRIORITY_QUEUE_INCLUDED
114 template <
typename T,
typename TContainer,
typename TCompare = etl::less<T> >
128 typedef typename etl::iterator_traits<typename TContainer::iterator>::difference_type difference_type;
136 return container.front();
145 return container.front();
159 container.push_back(value);
161 etl::push_heap(container.begin(), container.end(),
compare);
176 container.push_back(etl::move(value));
178 etl::push_heap(container.begin(), container.end(),
compare);
182#if ETL_USING_CPP11 && ETL_NOT_USING_STLPORT && !defined(ETL_PRIORITY_QUEUE_FORCE_CPP03_IMPLEMENTATION)
189 template <
typename ... Args>
197 etl::push_heap(container.begin(), container.end(), compare);
211 container.emplace_back();
213 etl::push_heap(container.begin(), container.end(),
compare);
222 template <
typename T1>
228 container.emplace_back(value1);
230 etl::push_heap(container.begin(), container.end(),
compare);
239 template <
typename T1,
typename T2>
245 container.emplace_back(value1, value2);
247 etl::push_heap(container.begin(), container.end(),
compare);
256 template <
typename T1,
typename T2,
typename T3>
262 container.emplace_back(value1, value2, value3);
264 etl::push_heap(container.begin(), container.end(),
compare);
273 template <
typename T1,
typename T2,
typename T3,
typename T4>
279 container.emplace_back(value1, value2, value3, value4);
281 etl::push_heap(container.begin(), container.end(),
compare);
294 template <
typename TIterator>
297#if ETL_IS_DEBUG_BUILD
298 difference_type
d = etl::distance(first, last);
304 container.assign(first, last);
305 etl::make_heap(container.begin(), container.end(),
compare);
315 etl::pop_heap(container.begin(), container.end(),
compare);
317 container.pop_back();
335 return container.size();
343 return container.max_size();
352 return container.empty();
361 return container.size() == container.max_size();
370 return container.max_size() - container.size();
403 move(etl::move(
rhs));
426 while (!
other.empty())
459 template <
typename T, const
size_t SIZE,
typename TContainer = etl::vector<T, SIZE>,
typename TCompare = etl::less<
typename TContainer::value_type> >
464 typedef typename TContainer::size_type size_type;
467 static ETL_CONSTANT size_type MAX_SIZE = size_type(SIZE);
503 template <
typename TIterator>
548 template <
typename T, const
size_t SIZE,
typename TContainer,
typename TCompare>
549 ETL_CONSTANT
typename priority_queue<T, SIZE, TContainer, TCompare>::size_type priority_queue<T, SIZE, TContainer, TCompare>::MAX_SIZE;
Definition priority_queue.h:461
~priority_queue()
Destructor.
Definition priority_queue.h:513
priority_queue(const priority_queue &rhs)
Copy constructor.
Definition priority_queue.h:480
priority_queue & operator=(const priority_queue &rhs)
Assignment operator.
Definition priority_queue.h:521
priority_queue()
Default constructor.
Definition priority_queue.h:472
priority_queue(TIterator first, TIterator last)
Definition priority_queue.h:504
#define ETL_ASSERT(b, e)
Definition error_handler.h:356
Definition exception.h:47
bool full() const
Definition priority_queue.h:359
void pop_into(reference destination)
Definition priority_queue.h:324
bool empty() const
Definition priority_queue.h:350
size_type max_size() const
Returns the maximum number of items that can be queued.
Definition priority_queue.h:341
void assign(TIterator first, TIterator last)
Definition priority_queue.h:295
void emplace(const T1 &value1, const T2 &value2, const T3 &value3)
Definition priority_queue.h:257
void push(const_reference value)
Definition priority_queue.h:154
T & reference
A reference to the type used in the queue.
Definition priority_queue.h:122
void emplace(const T1 &value1, const T2 &value2, const T3 &value3, const T4 &value4)
Definition priority_queue.h:274
ipriority_queue & operator=(const ipriority_queue &rhs)
Assignment operator.
Definition priority_queue.h:384
TCompare compare_type
The comparison type.
Definition priority_queue.h:121
reference top()
Definition priority_queue.h:134
const T & const_reference
A const reference to the type used in the queue.
Definition priority_queue.h:123
T value_type
The type stored in the queue.
Definition priority_queue.h:119
size_type size() const
Returns the current number of items in the priority queue.
Definition priority_queue.h:333
void clone(const ipriority_queue &other)
Make this a clone of the supplied priority queue.
Definition priority_queue.h:415
const_reference top() const
Definition priority_queue.h:143
void clear()
Clears the queue to the empty state.
Definition priority_queue.h:376
void pop()
Definition priority_queue.h:312
void emplace(const T1 &value1)
Definition priority_queue.h:223
size_type available() const
Definition priority_queue.h:368
void emplace()
Definition priority_queue.h:206
TContainer::size_type size_type
The type used for determining the size of the queue.
Definition priority_queue.h:127
TContainer container_type
The container type used for priority queue.
Definition priority_queue.h:120
ipriority_queue()
The constructor that is called from derived classes.
Definition priority_queue.h:437
void emplace(const T1 &value1, const T2 &value2)
Definition priority_queue.h:240
This is the base for all priority queues that contain a particular type.
Definition priority_queue.h:116
Definition priority_queue.h:61
Definition priority_queue.h:75
Definition priority_queue.h:89
bitset_ext
Definition absolute.h:38
pair holds two objects of arbitrary type
Definition utility.h:164