mirror of
https://github.com/boostorg/unordered.git
synced 2025-11-21 17:59:54 +01:00
6fd63ab727e1764d05cf6fa870ae1e497e40377b
* Move unordered_printers.hpp into 'detail', where it should have been from the beginning This is not a public header. It is only meant to be consumed as a transitive include. * Store self.table instead of self.val * Fix pretty-printers not working when constexpr variables are optimized away Also do a few other things. * `groups` and `elements` are now stored inside `self` * `mask`, `n0`, and `n` aren't declared ahead of their first assignment * Remove trailing whitespace * Update the generated pretty-printer header
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.
boost::concurrent_node_set boost::concurrent_node_map
- Variations of
boost::concurrent_flat_(set|map) providing pointer stability.Learn about Boost.Unordered
- Online documentation
- Some benchmarks
- Technical articles on Boost.Unordered internal design:
- Debugging visualizers for Boost.Unordered:
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.86):
[requires]
boost/[>=1.86.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%