mirror of
https://github.com/boostorg/unordered.git
synced 2026-08-03 20:24:07 +02:00
f734e399e33c29f3e7d5548a4f04a8afd3f79a6d
* added concurrent node containers
* removed spurious typename
* added missing includes
* avoided unused param warning
* worked around Clang bug
* s/{}/() to work around GCC4.8 problems with aggregate initialization
* used /bigobj for cfoa/visit_tests.cpp
* suppressed localized maybe-uninitialized warnings
* fixed comments
* added /bigobj to cfoa/insert_tests.cpp
* instrumented double exact comparison to spot a spurious error
* fixed pedantic error
* refactored byte_span machinery
* compromised on sub-epsilon equality for doubles that should be identical
* documented boost::concurrent_node_(map|set)
* added concurrent_node_set
* added missing AlternativeType
* tested empty node insertion
* tested node_handle allocator management
* added nonassignable_allocator and node_handle_allocator_swap_tests
* fixed warning disabling
* silenced spurious GCC warning
* broadened scope of previous pragma
* broadened even more
* worked around spurious constexpr-related msvc-14.0 bug
https://godbolt.org/z/v78545Ebf
* added workaround back
* replaced previous workaround with built-in one
* added workaround back on top of built-in solution (which doesn't work 100% of the time)
Boost.Unordered
Boost.Unordered offers a catalog of hash containers with different standards compliance levels, performances and intented usage scenarios:
boost::unordered_set boost::unordered_map boost::unordered_multiset boost::unordered_multimap
- Fully conformant implementations of
std::unordered_[multi](set|map),
but faster and up to the latest revisions of the standard even if you're working in an older version of C++ (heterogeneous lookup,
try_emplace, contains, etc.)boost::unordered_flat_set boost::unordered_flat_map
- The fastest of the lot. Based on open addressing, these containers slightly
deviate from the standard in exchange for top performance.
boost::unordered_node_set boost::unordered_node_map
- Variations of
boost::unordered_flat_(set|map) providing pointer stability.boost::concurrent_flat_set boost::concurrent_flat_map
- High performance for multithreaded scenarios. Introducing a new non-standard, iterator-free API.
Learn about Boost.Unordered
- Online documentation
- Some benchmarks
- Technical articles on Boost.Unordered internal design:
Get the library
Boost.Unordered can be installed in a number of ways:
- Download Boost and you're ready to go (this is a header-only library requiring no building).
- Using Conan 2: In case you don't have it yet, add an entry for Boost in your
conanfile.txt(the example requires at least Boost 1.83):
[requires]
boost/[>=1.83.0]
- If you're not using any compiled Boost library, the following will skip building altogether:
[options]
boost:header_only=True
- Using vcpkg: Execute the command
vcpkg install boost-unordered
- Using CMake: Boost CMake support infrastructure allows you to use CMake directly to download, build and consume all of Boost or some specific libraries.
Support
- Join the #boost-unordered discussion group at cpplang.slack.com (ask for an invite if you’re not a member of this workspace yet)
- Ask in the Boost Users mailing list
(add the
[unordered]tag at the beginning of the subject line) - File an issue
Contribute
- Pull requests against develop branch are most welcome. Note that by submitting patches you agree to license your modifications under the Boost Software License, Version 1.0.
Languages
C++
98.7%
Python
0.7%
CMake
0.5%