21 : positions(vertices, -1)
23 heap.reserve(std::min(vertices, maximumEntries));
25 bool empty()
const {
return heap.empty(); }
26 std::size_t
size()
const {
return heap.size(); }
29 return heap.capacity() *
sizeof(
Entry) + positions.capacity() *
sizeof(int);
35 at = int(heap.size());
36 heap.push_back(entry);
47 const auto result = heap.front();
48 positions[result.vertex] = -1;
49 if (heap.size() == 1) {
53 heap.front() = heap.back();
55 positions[heap.front().vertex] = 0;
61 std::vector<Entry> heap;
62 std::vector<int> positions;
63 static bool before(
const Entry &
a,
const Entry &
b)
66 return a.tile <
b.tile;
67 if (
a.importance !=
b.importance)
68 return a.importance <
b.importance;
69 if (
a.density !=
b.density)
70 return a.density <
b.density;
71 return a.vertex <
b.vertex;
73 void exchange(
int a,
int b)
75 std::swap(heap[
a], heap[
b]);
76 positions[heap[
a].vertex] =
a;
77 positions[heap[
b].vertex] =
b;
93 const int left =
at * 2 + 1;
94 if (
left >=
int(heap.size()))
99 if (!before(heap[next], heap[
at]))
Definition coarseningqueue.hpp:13
Entry pop()
Definition coarseningqueue.hpp:45
void update(Entry entry)
Definition coarseningqueue.hpp:31
bool empty() const
Definition coarseningqueue.hpp:25
std::size_t size() const
Definition coarseningqueue.hpp:26
std::size_t capacityBytes() const
Definition coarseningqueue.hpp:27
CoarseningQueue(std::size_t vertices, std::size_t maximumEntries=0)
Definition coarseningqueue.hpp:20
Definition qtcdtstorage.h:9
int right
Definition constraintaudit.cpp:162
int at
Definition constraintaudit.cpp:156
int left
Definition constraintaudit.cpp:162
int parent
Definition planning.cpp:199
Definition coarseningqueue.hpp:15
float importance
Definition coarseningqueue.hpp:16
std::uint32_t tile
Definition coarseningqueue.hpp:18
float density
Definition coarseningqueue.hpp:16
int vertex
Definition coarseningqueue.hpp:17
double a
Definition terrainerrorfield.cpp:42
double b
Definition terrainerrorfield.cpp:42