From d0289b4c7becfb82c18ef215614cfa272f45e3cb Mon Sep 17 00:00:00 2001 From: joaquintides Date: Sat, 18 Feb 2023 12:13:14 +0100 Subject: [PATCH] editorial --- doc/unordered/buckets.adoc | 2 +- doc/unordered/compliance.adoc | 6 +++--- doc/unordered/rationale.adoc | 7 ++++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/unordered/buckets.adoc b/doc/unordered/buckets.adoc index 494958ec..cf563f8c 100644 --- a/doc/unordered/buckets.adoc +++ b/doc/unordered/buckets.adoc @@ -262,7 +262,7 @@ The diagram shows the basic internal layout of `boost::unordered_flat_map`/`unor .Open-addressing layout used by Boost.Unordered. image::foa.png[align=center] -As with all open-addressing containers, elements (or element nodes in the case of +As with all open-addressing containers, elements (or pointers to the element nodes in the case of `boost::unordered_node_map` and `boost::unordered_node_set`) are stored directly in the bucket array. This array is logically divided into 2^_n_^ _groups_ of 15 elements each. In addition to the bucket array, there is an associated _metadata array_ with 2^_n_^ diff --git a/doc/unordered/compliance.adoc b/doc/unordered/compliance.adoc index 6a0386cf..cfe26f84 100644 --- a/doc/unordered/compliance.adoc +++ b/doc/unordered/compliance.adoc @@ -5,9 +5,9 @@ :cpp: C++ -== Closed-addressing containers: unordered_[multi]set, unordered_[multi]map +== Closed-addressing containers -The intent of Boost.Unordered is to provide a conformant +`unordered_[multi]set` and `unordered_[multi]map` are intended to provide a conformant implementation of the {cpp}20 standard that will work with {cpp}98 upwards. This wide compatibility does mean some compromises have to be made. With a compiler and library that fully support {cpp}11, the differences should @@ -117,7 +117,7 @@ Variadic constructor arguments for `emplace` are only used when both rvalue references and variadic template parameters are available. Otherwise `emplace` can only take up to 10 constructors arguments. -== Open-addressing containers: unordered_flat_set/unordered_node_set, unordered_flat_map/unordered_node_map +== Open-addressing containers The C++ standard does not currently provide any open-addressing container specification to adhere to, so `boost::unordered_flat_set`/`unordered_node_set` and diff --git a/doc/unordered/rationale.adoc b/doc/unordered/rationale.adoc index 4485ab78..50758164 100644 --- a/doc/unordered/rationale.adoc +++ b/doc/unordered/rationale.adoc @@ -4,9 +4,10 @@ = Implementation Rationale -== boost::unordered_[multi]set and boost::unordered_[multi]map +== Closed-addressing containers -These containers adhere to the standard requirements for unordered associative +`boost::unordered_[multi]set` and `boost::unordered_[multi]map` +adhere to the standard requirements for unordered associative containers, so the interface was fixed. But there are still some implementation decisions to make. The priorities are conformance to the standard and portability. @@ -73,7 +74,7 @@ Since release 1.80.0, prime numbers are chosen for the number of buckets in tandem with sophisticated modulo arithmetic. This removes the need for "mixing" the result of the user's hash function as was used for release 1.79.0. -== boost::unordered_flat_set/unordered_node_set and boost::unordered_flat_map/unordered_node_map +== Open-addresing containers The C++ standard specification of unordered associative containers impose severe limitations on permissible implementations, the most important being