v1.3.0
This release contains a few bug fixes and numerous improvements mostly related to performance. Notably:
- New
relocate()
andrelocate_if()
functions for faster "moving" of entries from one coordinate to another - New
try_emplace()
functions analogous totry_emplace()
instd::map
etc. - Proper support for cmake with Visual Studio 2019 (except benchmarks).
What's Changed
Added
- Added flag to relocate() allow short cutting in case of identical keys. #68
- Added tested support for move-only and copy-only value objects. #56
- Added custom bucket implementation (similar to std::unordered_set). This improves update performance by 5%-20%. #44
- Added
PhTree.relocate(old_key, new_key)
andPhTree.relocate_if(old_key, new_key, predicate)
. This is a lot faster than using other methods. #43 - Added try_emplace(key, value) and try_emplace(iter_hint, key, value) #40
- Added FilterBoxAABB and FilterSphereAABB as examples for filtering a PH-Tree with box keys #33
Changed
- Moved tests and benchmarks into separate folders. #67
- Cleaned up unit tests. #54
- Simplified internals of
erase()
. #47 - Removed internal use of
std::optional()
to slightly reduce memory overhead #38 - Removed restrictions on bazel version #35
- API BREAKING CHANGE: API of filters have been changed to be more correct, explicit and flexible. #21
- Correctness: Converters and distance functions are not copied unnecessarily anymore.
- Explicit: Filters must have a mandatory parameter for a converter reference. This ensures that the correct converter is used, probably
tree.converter()
. - Flexible: Distance functions can be provided through a universal reference (forwarding reference). Also, filters are now movable and copyable.
- API BREAKING CHANGE: Allow filtering on buckets in multimaps. Multimap filters have different functions
and function signatures than normalPhTree
filters. #26
Fixed
- Fixed compiler warnings when compiling with Visual Studio 2019. #74
- Fixed cmake to work with Visual Studio 2019. Added tests and benchmarks to cmake. (benchmarks still do not work with VS at the moment). #62
- Fixed compilation problems and a memory leak when compiling with Visual Studio 2019. (also added
msan
support). #64
Full Changelog: v1.2.0...v1.3.0