1#ifndef FIXED_SIZE_PRIORITY_QUEUE_H
2#define FIXED_SIZE_PRIORITY_QUEUE_H
4#include "cubeai/base/cubeai_types.h"
5#include "cubeai/utils/cubeai_concepts.h"
19template<
typename T,
class Container = std::vector<T>>
39 uint_t
size()const noexcept{
return pq_.size();}
51 bool empty()const noexcept{
return pq_.empty();}
99template<
typename T,
class Container>
111template<
typename T, utils::concepts::is_default_constructible Compare = std::less<T>,
class Container = std::vector<T>>
155template<typename T, utils::concepts::is_default_constructible Compare, class Container>
163template<
typename T, utils::concepts::is_default_constructible Compare,
class Container>
172 auto min = std::min_element(this->
begin(), this->
end());
183 std::make_heap(this->
begin(), this->
end(), value_cp_);
186template<
typename T, utils::concepts::is_default_constructible Compare,
class Container>
194 std::pop_heap(this->
begin(), this->
end(), value_cp_);
198template<
typename T, utils::concepts::is_default_constructible Compare,
class Container>
201 auto item = this->
top();
210template<
typename T, utils::concepts::is_default_constructible Compare = std::greater<T>,
class Container = std::vector<T>>
254template<typename T, utils::concepts::is_default_constructible Compare, class Container>
257 detail::priority_queue_common<T, Container>(max_size),
262template<
typename T, utils::concepts::is_default_constructible Compare,
class Container>
267 if(this->size() >= this->capacity()){
270 auto max = std::max_element(this->begin(), this->end());
280 this->push_back(value);
282 std::make_heap(this->begin(), this->end(), value_cp_);
285template<
typename T, utils::concepts::is_default_constructible Compare,
class Container>
293 std::pop_heap(this->begin(), this->end(), value_cp_);
297template<
typename T, utils::concepts::is_default_constructible Compare,
class Container>
300 auto item = this->top();
FixedSizeMaxPriorityQueue.
Definition fixed_size_priority_queue.h:113
void push(const value_type &value)
push
Definition fixed_size_priority_queue.h:165
T value_type
Definition fixed_size_priority_queue.h:117
void pop() noexcept
pop
Definition fixed_size_priority_queue.h:188
Container::const_iterator const_iterator
Definition fixed_size_priority_queue.h:121
Container::iterator iterator
Definition fixed_size_priority_queue.h:120
Container container_type
Definition fixed_size_priority_queue.h:118
value_type top_and_pop()
top_and_pop
Definition fixed_size_priority_queue.h:200
Compare value_compare
Definition fixed_size_priority_queue.h:119
FixedSizeMaxPriorityQueue.
Definition fixed_size_priority_queue.h:212
Container container_type
Definition fixed_size_priority_queue.h:217
Container::iterator iterator
Definition fixed_size_priority_queue.h:219
T value_type
Definition fixed_size_priority_queue.h:216
Container::const_iterator const_iterator
Definition fixed_size_priority_queue.h:220
Compare value_compare
Definition fixed_size_priority_queue.h:218
Definition fixed_size_priority_queue.h:21
value_type top()
top
Definition fixed_size_priority_queue.h:63
Container::iterator iterator
Definition fixed_size_priority_queue.h:27
Container::const_iterator const_iterator
Definition fixed_size_priority_queue.h:28
priority_queue_common(uint_t max_size) noexcept
Constructor.
Definition fixed_size_priority_queue.h:100
Container container_type
Definition fixed_size_priority_queue.h:25
void push_back(const T &value)
push_back
Definition fixed_size_priority_queue.h:80
void pop_back()
pop_back
Definition fixed_size_priority_queue.h:85
bool empty() const noexcept
empty
Definition fixed_size_priority_queue.h:51
T value_type
Definition fixed_size_priority_queue.h:24
container_type pq_
pq_
Definition fixed_size_priority_queue.h:95
uint_t capacity_
capacity_
Definition fixed_size_priority_queue.h:90
uint_t capacity() const noexcept
capacity
Definition fixed_size_priority_queue.h:45
const_iterator end() const
Definition fixed_size_priority_queue.h:72
iterator begin()
Definition fixed_size_priority_queue.h:68
const_iterator begin() const
Definition fixed_size_priority_queue.h:71
iterator end()
Definition fixed_size_priority_queue.h:69
const value_type & top() const
top
Definition fixed_size_priority_queue.h:57
uint_t size() const noexcept
size
Definition fixed_size_priority_queue.h:39
Definition mc_tree_search_solver.h:22