Boost.org unordered module
Go to file
Braden Ganetsky 67c5cdb3a6
Optimize `emplace()` for exactly a `value_type` or `init_type` argument (#227)
* Add structs to count special member functions

* Add failing emplace tests, that will pass after making the optimization

* Optimize emplace() to not allocate when we already have a value_type or init_type

* Fix newly failing cfoa tests
2023-12-31 18:56:14 +01:00
.drone Update drone.bat to abbreviate paths 2023-09-18 15:32:48 -07:00
.github/workflows Fix/bucket iterator indirection operator (#220 rewrite) (#221) 2023-11-17 08:51:40 +01:00
benchmark fixed copy&paste error 2023-02-24 08:59:45 +01:00
doc [skip ci] editorial 2023-12-01 12:22:48 +01:00
examples Update include paths to use ContainerHash instead of Functional for `hash` 2023-09-27 13:03:15 -07:00
include/boost Optimize `emplace()` for exactly a `value_type` or `init_type` argument (#227) 2023-12-31 18:56:14 +01:00
meta Update maintainers list in libraries.json 2023-09-28 21:27:46 -07:00
test Optimize `emplace()` for exactly a `value_type` or `init_type` argument (#227) 2023-12-31 18:56:14 +01:00
.appveyor.yml Remove project test requirements and remove problematic CI entries 2023-09-28 09:51:47 -07:00
.codecov.yml Update CI from boost-ci 2022-06-09 11:04:20 +02:00
.drone.jsonnet Fix/b2 5.0.0 (#228) 2023-12-30 22:11:11 +01:00
.editorconfig Change clang format indentation + .editorconfig file 2017-06-11 20:55:59 +01:00
.gitattributes Move top-level boost directory over to "devel" (temporarily) 2007-07-31 20:32:15 +00:00
.gitignore Add /doc/pdf/ to .gitignore 2023-01-12 01:35:35 +02:00
.travis.yml Use boost 1.67.0 in tests 2018-04-15 22:39:33 +01:00
CMakeLists.txt Regenerate CMakeLists.txt 2023-11-30 17:40:41 +02:00
LICENSE Add LICENSE and README 2022-06-09 10:40:52 +02:00
README.md [skip ci] beautified some badges 2023-11-19 18:45:21 +01:00
_clang-format Update clang format comment for 4.0.0 2017-10-29 16:52:46 +00:00
index.html Update index.html 2022-02-01 02:35:29 +02:00

README.md

Boost.Unordered

Branch CI Drone status Build status codecov Deps Documentation Enter the Matrix
Branch CI Drone status Build status codecov Deps Documentation Enter the Matrix
BSL 1.0 C++11 required Header-only library

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

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

Support

Contribute