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.
- Online documentation
- Some benchmarks
- Technical articles on Boost.Unordered internal design:
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.
- 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
- 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.