diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2023-10-07 03:23:49 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2023-10-07 03:23:49 +0200 |
commit | db9532ae255798454be991a1d8cdd1bc55206363 (patch) | |
tree | af0d530e161b1c02e491031ace0df2d8c52cd65e /src/path-search-astar.cpp | |
parent | 06488337637fe6c506ca30fe445c6fa3c4f2494c (diff) |
a
Diffstat (limited to 'src/path-search-astar.cpp')
-rw-r--r-- | src/path-search-astar.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/path-search-astar.cpp b/src/path-search-astar.cpp index 03225a33..e8aac080 100644 --- a/src/path-search-astar.cpp +++ b/src/path-search-astar.cpp @@ -46,22 +46,26 @@ astar_edge astar_edge::swapped() const return e; } -astar_edge::astar_edge() {} - bool operator<(const astar_edge_tuple& a, const astar_edge_tuple& b) { return b.dist < a.dist; } -void astar::reserve(size_t count) +astar::astar() { - Q.reserve(count); - seen.reserve(2*count); + mins.max_load_factor(0.25f); + reserve(4096); } bool astar::add_visited(const astar_edge& value) { - return seen.insert(value).second && seen.insert(value.swapped()).second; + if (seen.insert(value).second) + { + auto ret = seen.insert(value.swapped()).second; + fm_debug_assert(ret); + return true; + } + return false; } void astar::push(const astar_edge& value, uint32_t dist) @@ -78,10 +82,17 @@ astar_edge_tuple astar::pop() return ret; } +void astar::reserve(size_t count) +{ + Q.reserve(count); + seen.reserve(2*count); +} + void astar::clear() { Q.clear(); seen.clear(); + mins.clear(); } } // namespace floormat |