diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2025-05-31 19:39:20 +0200 |
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2025-08-13 21:11:06 +0200 |
| commit | 7e85868471c1970a5d2aa7540c75490d8f8215d3 (patch) | |
| tree | 4beb840ba65112f093c973bae1e7da4470a241ec /src | |
| parent | 9df9978ecc2ee90677291b4454756dbae2047057 (diff) | |
fix gcc compile-time error
Diffstat (limited to 'src')
| -rw-r--r-- | src/world.cpp | 7 | ||||
| -rw-r--r-- | src/world.hpp | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/world.cpp b/src/world.cpp index 89c127cc..1c7c45c9 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -33,9 +33,12 @@ struct world::robin_map_wrapper final : tsl::robin_map<object_id, bptr<object>, world::world(world&& w) noexcept = default; -world::world(std::unordered_map<chunk_coords_, chunk>&& chunks) : - world{std::max(initial_capacity, size_t(1/max_load_factor * 2 * chunks.size()))} +world::world(std::unordered_map<chunk_coords_, chunk, chunk_coords_hasher>&& chunks) { + const auto capʹ = (size_t)(1e-4f + (float)chunks.size() / max_load_factor); + const auto cap = std::max(capʹ, initial_capacity); + _chunks.reserve(cap); + _chunks.max_load_factor(max_load_factor); for (auto&& [coord, c] : chunks) operator[](coord) = move(c); } diff --git a/src/world.hpp b/src/world.hpp index a643de3b..01fc5cc9 100644 --- a/src/world.hpp +++ b/src/world.hpp @@ -67,7 +67,7 @@ private: public: explicit world(); ~world() noexcept; - explicit world(std::unordered_map<chunk_coords_, chunk>&& chunks); + explicit world(std::unordered_map<chunk_coords_, chunk, chunk_coords_hasher>&& chunks); struct pair_chunk_tile final { chunk& c; tile_ref t; }; // NOLINT |
