Loading [MathJax]/extensions/MathMenu.js
Cytopia  0.3
A city building simulation game
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PriorityQueue.inl.hxx
Go to the documentation of this file.
1 template <typename T, typename Comparator> inline bool PriorityQueue<T, Comparator>::empty() const noexcept
2 {
3  return m_container.empty();
4 }
5 
6 template <typename T, typename Comparator>
8 {
9  return m_container.front();
10 }
11 
12 template <typename T, typename Comparator>
14 {
15  return m_container.front();
16 }
17 
18 template <typename T, typename Comparator> void PriorityQueue<T, Comparator>::push(value_type &&element)
19 {
20  m_container.emplace_back(std::move(element));
21  std::push_heap(m_container.begin(), m_container.end(), Comparator{});
22 }
23 
24 template <typename T, typename Comparator> void PriorityQueue<T, Comparator>::push(const value_type &element)
25 {
26  m_container.emplace_back(element);
27  std::push_heap(m_container.begin(), m_container.end(), Comparator{});
28 }
29 
30 template <typename T, typename Comparator> void PriorityQueue<T, Comparator>::pop(void)
31 {
32  std::pop_heap(m_container.begin(), m_container.end(), Comparator{});
33  m_container.pop_back();
34 }
35 
36 template <typename T, typename Comparator>
37 template <typename Predicate>
39 {
40  auto removedIter = std::remove_if(m_container.begin(), m_container.end(), std::forward<Predicate>(predicate));
41  PriorityQueue<T, Comparator>::size_type numOfRemovedElements = 0;
42 
43  if (removedIter != m_container.end())
44  {
45  numOfRemovedElements = m_container.end() - removedIter;
46  m_container.erase(removedIter, m_container.end());
47  std::make_heap(m_container.begin(), m_container.end(), Comparator{});
48  }
49 
50  return numOfRemovedElements;
51 }
52 
53 template <typename T, typename Comparator> inline void PriorityQueue<T, Comparator>::clear(void) noexcept { m_container.clear(); }
PriorityQueue< GameClock::ClockTask, std::greater< GameClock::ClockTask > >::value_type
typename Container::value_type value_type
Definition: PriorityQueue.hxx:16
PriorityQueue::reference
typename Container::reference reference
Definition: PriorityQueue.hxx:18
PriorityQueue::empty
bool empty() const noexcept
Check whether queue is empty.
Definition: PriorityQueue.inl.hxx:1
PriorityQueue::clear
void clear(void) noexcept
Remove all elements from queue.
Definition: PriorityQueue.inl.hxx:53
PriorityQueue::size_type
typename Container::size_type size_type
Definition: PriorityQueue.hxx:17
PriorityQueue::pop
void pop()
Remove first element from the queue (from top).
Definition: PriorityQueue.inl.hxx:30
PriorityQueue::erase_if
size_type erase_if(Predicate &&predicate)
Remove all elements from queue for which predicate returns true.
Definition: PriorityQueue.inl.hxx:38
PriorityQueue::push
void push(value_type &&element)
Add new element to the queue.
Definition: PriorityQueue.inl.hxx:18
PriorityQueue::const_reference
typename Container::const_reference const_reference
Definition: PriorityQueue.hxx:19
PriorityQueue::top
reference top()
Get top element from the queue.
Definition: PriorityQueue.inl.hxx:7