diff --git a/doc/modules/ROOT/nav.adoc b/doc/modules/ROOT/nav.adoc index 7a940aa0..6768e129 100644 --- a/doc/modules/ROOT/nav.adoc +++ b/doc/modules/ROOT/nav.adoc @@ -15,7 +15,7 @@ ** xref:reference/unordered_set.adoc[unordered_set] ** xref:reference/unordered_multiset.adoc[unordered_multiset] ** xref:reference/hash_traits.adoc[hash_traits] -** xref:reference/stats.adoc[stats] +** xref:reference/stats.adoc[Statistics] ** xref:reference/unordered_flat_map.adoc[unordered_flat_map] ** xref:reference/unordered_flat_set.adoc[unordered_flat_set] ** xref:reference/unordered_node_map.adoc[unordered_node_map] diff --git a/doc/modules/ROOT/pages/buckets.adoc b/doc/modules/ROOT/pages/buckets.adoc index bbf77e24..181952c1 100644 --- a/doc/modules/ROOT/pages/buckets.adoc +++ b/doc/modules/ROOT/pages/buckets.adoc @@ -24,15 +24,15 @@ predicate `Pred`). If the hash function has worked well the elements will be evenly distributed amongst the buckets so only a small number of elements will need to be examined. -There is <>. +There is xref:hash_equality.adoc#hash_equality[more information on hash functions and +equality predicates in the next section]. You can see in the diagram that `A` & `D` have been placed in the same bucket. When looking for elements in this bucket up to 2 comparisons are made, making the search slower. This is known as a *collision*. To keep things fast we try to keep collisions to a minimum. -If instead of `boost::unordered_set` we had used <>, the +If instead of `boost::unordered_set` we had used `xref:reference/unordered_flat_set.adoc[boost::unordered_flat_set]`, the diagram would look as follows: image::buckets-oa.png[] diff --git a/doc/modules/ROOT/pages/concurrent.adoc b/doc/modules/ROOT/pages/concurrent.adoc index 3a4ee3b0..a567b135 100644 --- a/doc/modules/ROOT/pages/concurrent.adoc +++ b/doc/modules/ROOT/pages/concurrent.adoc @@ -150,10 +150,10 @@ element already exists): ---- Consult the references of -`xref:reference/concurrent_node_set#concurrent_node_set[boost::concurrent_node_set]`, -`xref:reference/concurrent_node_map#concurrent_flat_map[boost::concurrent_node_map]`, -`xref:reference/concurrent_flat_set#concurrent_flat_set[boost::concurrent_flat_set]` and -`xref:reference/concurrent_flat_map#concurrent_flat_map[boost::concurrent_flat_map]` +`xref:reference/concurrent_node_set.adoc#concurrent_node_set[boost::concurrent_node_set]`, +`xref:reference/concurrent_node_map.adoc#concurrent_node_map[boost::concurrent_node_map]`, +`xref:reference/concurrent_flat_set.adoc#concurrent_flat_set[boost::concurrent_flat_set]` and +`xref:reference/concurrent_flat_map.adoc#concurrent_flat_map[boost::concurrent_flat_map]` for the complete list of visitation-enabled operations. == Whole-Table Visitation diff --git a/doc/modules/ROOT/pages/hash_equality.adoc b/doc/modules/ROOT/pages/hash_equality.adoc index 065c03a2..8621be46 100644 --- a/doc/modules/ROOT/pages/hash_equality.adoc +++ b/doc/modules/ROOT/pages/hash_equality.adoc @@ -6,7 +6,7 @@ While the associative containers use an ordering relation to specify how the elements are stored, the unordered associative containers use an equality -predicate and a hash function. For example, <> +predicate and a hash function. For example, `xref:reference/unordered_map.adoc[boost::unordered_map]` is declared as: ```cpp diff --git a/doc/modules/ROOT/pages/intro.adoc b/doc/modules/ROOT/pages/intro.adoc index e6728c04..55a0e5dd 100644 --- a/doc/modules/ROOT/pages/intro.adoc +++ b/doc/modules/ROOT/pages/intro.adoc @@ -96,5 +96,4 @@ Boost.Unordered uses link:../../../container_hash/index.html[boost::hash^] it al including standard containers. To use any types not supported by these methods you have to extend Boost.Hash to support the type or use your own custom equality predicates and hash functions. See the -<> section -for more details. +xref:hash_equality.adoc#hash_equality[Equality Predicates and Hash Functions], section for more details. diff --git a/doc/modules/ROOT/pages/ref.adoc b/doc/modules/ROOT/pages/ref.adoc index c6f65ce9..0675a2da 100644 --- a/doc/modules/ROOT/pages/ref.adoc +++ b/doc/modules/ROOT/pages/ref.adoc @@ -6,7 +6,7 @@ * xref:reference/unordered_set.adoc[unordered_set] * xref:reference/unordered_multiset.adoc[unordered_multiset] * xref:reference/hash_traits.adoc[hash_traits] -* xref:reference/stats.adoc[stats] +* xref:reference/stats.adoc[Statistics] * xref:reference/unordered_flat_map.adoc[unordered_flat_map] * xref:reference/unordered_flat_set.adoc[unordered_flat_set] * xref:reference/unordered_node_map.adoc[unordered_node_map] diff --git a/doc/modules/ROOT/pages/reference/concurrent_flat_map.adoc b/doc/modules/ROOT/pages/reference/concurrent_flat_map.adoc index 8abc740c..58aa7e27 100644 --- a/doc/modules/ROOT/pages/reference/concurrent_flat_map.adoc +++ b/doc/modules/ROOT/pages/reference/concurrent_flat_map.adoc @@ -50,7 +50,7 @@ namespace boost { using size_type = std::size_t; using difference_type = std::ptrdiff_t; - using stats = xref:stats_stats_type[__stats-type__]; // if statistics are xref:concurrent_flat_map_boost_unordered_enable_stats[enabled] + using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:concurrent_flat_map_boost_unordered_enable_stats[enabled] // constants static constexpr size_type xref:#concurrent_flat_map_constants[bulk_visit_size] = _implementation-defined_; @@ -391,7 +391,7 @@ The size of the bucket array can be automatically increased by a call to `insert greater than `max_load_factor()`, except possibly for small sizes where the implementation may decide to allow for higher loads. -If `xref:hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -456,7 +456,7 @@ this macro. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the table. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the table. Note that this option decreases the overall performance of many operations. --- @@ -614,7 +614,7 @@ If statistics are xref:concurrent_flat_map_boost_unordered_enable_stats[enabled] transfers the internal statistical information from `other` and calls `other.reset_stats()`. [horizontal] -Complexity:;; O(`bucket_count()`) +Complexity:;; O(`bucket_count()`) --- @@ -749,7 +749,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate concurrent_flat_map& operator=(concurrent_flat_map const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -840,7 +840,7 @@ to increase further. [horizontal] Requires:;; `FwdIterator` is a https://en.cppreference.com/w/cpp/named_req/ForwardIterator[LegacyForwardIterator^] -({cpp}11 to {cpp}17), +({cpp}11 to {cpp}17), or satisfies https://en.cppreference.com/w/cpp/iterator/forward_iterator[std::forward_iterator^] ({cpp}20 and later). For `K` = `std::iterator_traits::value_type`, either `K` is `key_type` or else `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. @@ -1017,7 +1017,7 @@ Inserts `obj` in the table if and only if there is no element in the table with [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + @@ -1037,7 +1037,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1053,7 +1053,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1135,7 +1135,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1152,7 +1152,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1239,7 +1239,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1258,7 +1258,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1708,7 +1708,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the table so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_flat_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_flat_map_boost_unordered_enable_stats[enabled]. --- @@ -1719,7 +1719,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the table. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_flat_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_flat_map_boost_unordered_enable_stats[enabled]. --- @@ -1748,7 +1748,7 @@ template ----- template using __iter-key-type__ = std::remove_const_t< - std::tuple_element_t<0, xref:#concurrent_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::tuple_element_t<0, xref:#concurrent_flat_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- ==== __iter-mapped-type__ @@ -1756,7 +1756,7 @@ template ----- template using __iter-mapped-type__ = - std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]>; // exposition only + std::tuple_element_t<1, xref:#concurrent_flat_map_iter_value_type[__iter-value-type__]>; // exposition only ----- ==== __iter-to-alloc-type__ @@ -1764,8 +1764,8 @@ template ----- template using __iter-to-alloc-type__ = std::pair< - std::add_const_t>>, - std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::add_const_t>>, + std::tuple_element_t<1, xref:#concurrent_flat_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- === Equality Comparisons @@ -1833,7 +1833,7 @@ c.xref:#concurrent_flat_map_erase_if[erase_if](pred); ``concurrent_flat_map``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an concurrent_flat_map to an archive @@ -1844,7 +1844,7 @@ Requires:;; `std::remove_const::type` and `std::remove_const::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -402,7 +402,7 @@ this macro. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the table. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the table. Note that this option decreases the overall performance of many operations. --- @@ -560,7 +560,7 @@ If statistics are xref:concurrent_flat_set_boost_unordered_enable_stats[enabled] transfers the internal statistical information from `other` and calls `other.reset_stats()`. [horizontal] -Complexity:;; O(`bucket_count()`) +Complexity:;; O(`bucket_count()`) --- @@ -695,7 +695,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate concurrent_flat_set& operator=(concurrent_flat_set const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -783,7 +783,7 @@ to increase further. [horizontal] Requires:;; `FwdIterator` is a https://en.cppreference.com/w/cpp/named_req/ForwardIterator[LegacyForwardIterator^] -({cpp}11 to {cpp}17), +({cpp}11 to {cpp}17), or satisfies https://en.cppreference.com/w/cpp/iterator/forward_iterator[std::forward_iterator^] ({cpp}20 and later). For `K` = `std::iterator_traits::value_type`, either `K` is `key_type` or else `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. @@ -951,7 +951,7 @@ Inserts `obj` in the table if and only if there is no element in the table with [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. @@ -966,7 +966,7 @@ Inserts an element constructed from `std::forward(k)` in the container if and [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + @@ -986,7 +986,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1002,7 +1002,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1070,7 +1070,7 @@ Otherwise, invokes `f` with a const reference to the equivalent element. [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + @@ -1093,7 +1093,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1110,7 +1110,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1184,7 +1184,7 @@ Otherwise, invokes `f2` with a const reference to the equivalent element. [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; Invalidates pointers and references to elements if a rehashing is issued. + + @@ -1207,7 +1207,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1226,7 +1226,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1508,7 +1508,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the table so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_flat_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_flat_set_boost_unordered_enable_stats[enabled]. --- @@ -1519,7 +1519,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the table. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_flat_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_flat_set_boost_unordered_enable_stats[enabled]. --- @@ -1608,7 +1608,7 @@ c.xref:#concurrent_flat_set_erase_if[erase_if](pred); ``concurrent_flat_set``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an concurrent_flat_set to an archive @@ -1618,7 +1618,7 @@ Saves all the elements of a `concurrent_flat_set` `x` to an archive (XML archive Requires:;; `value_type` is serializable (XML serializable), and it supports Boost.Serialization `save_construct_data`/`load_construct_data` protocol (automatically suported by https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] -types). +types). Concurrency:;; Blocking on `x`. --- diff --git a/doc/modules/ROOT/pages/reference/concurrent_node_map.adoc b/doc/modules/ROOT/pages/reference/concurrent_node_map.adoc index f6e20dd8..ad70eb15 100644 --- a/doc/modules/ROOT/pages/reference/concurrent_node_map.adoc +++ b/doc/modules/ROOT/pages/reference/concurrent_node_map.adoc @@ -53,7 +53,7 @@ namespace boost { using node_type = _implementation-defined_; using insert_return_type = _implementation-defined_; - using stats = xref:stats_stats_type[__stats-type__]; // if statistics are xref:concurrent_node_map_boost_unordered_enable_stats[enabled] + using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:concurrent_node_map_boost_unordered_enable_stats[enabled] // constants static constexpr size_type xref:#concurrent_node_map_constants[bulk_visit_size] = _implementation-defined_; @@ -408,7 +408,7 @@ The size of the bucket array can be automatically increased by a call to `insert greater than `max_load_factor()`, except possibly for small sizes where the implementation may decide to allow for higher loads. -If `xref:hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -473,7 +473,7 @@ this macro. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the table. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the table. Note that this option decreases the overall performance of many operations. --- @@ -485,7 +485,7 @@ that this option decreases the overall performance of many operations. typedef _implementation-defined_ node_type; ---- -A class for holding extracted table elements, modelling +A class for holding extracted table elements, modelling https://en.cppreference.com/w/cpp/container/node_handle[NodeHandle]. --- @@ -666,7 +666,7 @@ If statistics are xref:concurrent_node_map_boost_unordered_enable_stats[enabled] transfers the internal statistical information from `other` and calls `other.reset_stats()`. [horizontal] -Complexity:;; O(`bucket_count()`) +Complexity:;; O(`bucket_count()`) --- @@ -801,7 +801,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate concurrent_node_map& operator=(concurrent_node_map const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -892,7 +892,7 @@ to increase further. [horizontal] Requires:;; `FwdIterator` is a https://en.cppreference.com/w/cpp/named_req/ForwardIterator[LegacyForwardIterator^] -({cpp}11 to {cpp}17), +({cpp}11 to {cpp}17), or satisfies https://en.cppreference.com/w/cpp/iterator/forward_iterator[std::forward_iterator^] ({cpp}20 and later). For `K` = `std::iterator_traits::value_type`, either `K` is `key_type` or else `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. @@ -1065,7 +1065,7 @@ Inserts `obj` in the table if and only if there is no element in the table with [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; A call of the form `insert(x)`, where `x` is equally convertible to both `value_type&&` and `init_type&&`, is not ambiguous and selects the `init_type` overload. @@ -1083,7 +1083,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1099,7 +1099,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1194,7 +1194,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1211,7 +1211,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1313,7 +1313,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1332,7 +1332,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1824,7 +1824,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the table so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_node_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_node_map_boost_unordered_enable_stats[enabled]. --- @@ -1835,7 +1835,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the table. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_node_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_node_map_boost_unordered_enable_stats[enabled]. --- @@ -1864,7 +1864,7 @@ template ----- template using __iter-key-type__ = std::remove_const_t< - std::tuple_element_t<0, xref:#concurrent_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::tuple_element_t<0, xref:#concurrent_node_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- ==== __iter-mapped-type__ @@ -1872,7 +1872,7 @@ template ----- template using __iter-mapped-type__ = - std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]>; // exposition only + std::tuple_element_t<1, xref:#concurrent_node_map_iter_value_type[__iter-value-type__]>; // exposition only ----- ==== __iter-to-alloc-type__ @@ -1880,8 +1880,8 @@ template ----- template using __iter-to-alloc-type__ = std::pair< - std::add_const_t>>, - std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::add_const_t>>, + std::tuple_element_t<1, xref:#concurrent_node_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- === Equality Comparisons @@ -1949,7 +1949,7 @@ c.xref:#concurrent_node_map_erase_if[erase_if](pred); ``concurrent_node_map``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an concurrent_node_map to an archive @@ -1960,7 +1960,7 @@ Requires:;; `std::remove_const::type` and `std::remove_const::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -419,7 +419,7 @@ this macro. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the table. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the table. Note that this option decreases the overall performance of many operations. --- @@ -431,7 +431,7 @@ that this option decreases the overall performance of many operations. typedef _implementation-defined_ node_type; ---- -A class for holding extracted table elements, modelling +A class for holding extracted table elements, modelling https://en.cppreference.com/w/cpp/container/node_handle[NodeHandle]. --- @@ -610,7 +610,7 @@ If statistics are xref:concurrent_node_set_boost_unordered_enable_stats[enabled] transfers the internal statistical information from `other` and calls `other.reset_stats()`. [horizontal] -Complexity:;; O(`bucket_count()`) +Complexity:;; O(`bucket_count()`) --- @@ -745,7 +745,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate concurrent_node_set& operator=(concurrent_node_set const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -833,7 +833,7 @@ to increase further. [horizontal] Requires:;; `FwdIterator` is a https://en.cppreference.com/w/cpp/named_req/ForwardIterator[LegacyForwardIterator^] -({cpp}11 to {cpp}17), +({cpp}11 to {cpp}17), or satisfies https://en.cppreference.com/w/cpp/iterator/forward_iterator[std::forward_iterator^] ({cpp}20 and later). For `K` = `std::iterator_traits::value_type`, either `K` is `key_type` or else `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. @@ -999,7 +999,7 @@ Inserts `obj` in the table if and only if there is no element in the table with [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. --- @@ -1013,7 +1013,7 @@ Inserts an element constructed from `std::forward(k)` in the container if and [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; This overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type. @@ -1031,7 +1031,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1047,7 +1047,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1130,7 +1130,7 @@ Otherwise, invokes `f` with a const reference to the equivalent element. [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; These overloads only participate in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type. @@ -1151,7 +1151,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1168,7 +1168,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1259,7 +1259,7 @@ Otherwise, invokes `f2` with a const reference to the equivalent element. [horizontal] Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. -Returns:;; `true` if an insert took place. +Returns:;; `true` if an insert took place. Concurrency:;; Blocking on rehashing of `*this`. Notes:;; These overloads only participate in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs. The library assumes that `Hash` is callable with both `K` and `Key` and that `Pred` is transparent. This enables heterogeneous lookup which avoids the cost of instantiating an instance of the `Key` type. @@ -1280,7 +1280,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1299,7 +1299,7 @@ Equivalent to ----- [horizontal] -Returns:;; The number of elements inserted. +Returns:;; The number of elements inserted. --- @@ -1631,7 +1631,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the table so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_node_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_node_set_boost_unordered_enable_stats[enabled]. --- @@ -1642,7 +1642,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the table. -Notes:;; Only available if xref:stats[statistics calculation] is xref:concurrent_node_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:concurrent_node_set_boost_unordered_enable_stats[enabled]. --- @@ -1731,7 +1731,7 @@ c.xref:#concurrent_node_set_erase_if[erase_if](pred); ``concurrent_node_set``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an concurrent_node_set to an archive @@ -1741,7 +1741,7 @@ Saves all the elements of a `concurrent_node_set` `x` to an archive (XML archive Requires:;; `value_type` is serializable (XML serializable), and it supports Boost.Serialization `save_construct_data`/`load_construct_data` protocol (automatically suported by https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] -types). +types). Concurrency:;; Blocking on `x`. --- diff --git a/doc/modules/ROOT/pages/reference/stats.adoc b/doc/modules/ROOT/pages/reference/stats.adoc index 944b6069..fe690f7a 100644 --- a/doc/modules/ROOT/pages/reference/stats.adoc +++ b/doc/modules/ROOT/pages/reference/stats.adoc @@ -30,7 +30,7 @@ struct xref:stats_lookup_stats_type[__lookup-stats-type__] xref:#stats_stats_summary_type[__stats-summary-type__] num_comparisons; }; -struct xref:stats_stats_type[__stats-type__] +struct xref:reference/stats.adoc#stats_stats_type[__stats-type__] { xref:#stats_insertion_stats_type[__insertion-stats-type__] insertion; xref:stats_lookup_stats_type[__lookup-stats-type__] successful_lookup, @@ -46,14 +46,14 @@ Provides the average value, variance and standard deviation of a sequence of num Provides the number of insertion operations performed by a container and statistics on the associated __probe length__ (number of -xref:#structures_open_addressing_containers[bucket groups] accessed per operation). +xref:structures.adoc#structures_open_addressing_containers[bucket groups] accessed per operation). ==== __lookup-stats-type__ For successful (element found) or unsuccessful (not found) lookup, provides the number of operations performed by a container and statistics on the associated __probe length__ (number of -xref:#structures_open_addressing_containers[bucket groups] accessed) +xref:structures.adoc#structures_open_addressing_containers[bucket groups] accessed) and number of element comparisons per operation. ==== __stats-type__ @@ -66,6 +66,6 @@ If the supplied hash function has good quality, then: * For unsuccessful lookups, the average number of element comparisons should be close to 0.0. These statistics can be used to determine if a given hash function -can be marked as xref:hash_traits_hash_is_avalanching[__avalanching__]. +can be marked as xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[__avalanching__]. --- diff --git a/doc/modules/ROOT/pages/reference/unordered_flat_map.adoc b/doc/modules/ROOT/pages/reference/unordered_flat_map.adoc index 4b42ec26..99e8746f 100644 --- a/doc/modules/ROOT/pages/reference/unordered_flat_map.adoc +++ b/doc/modules/ROOT/pages/reference/unordered_flat_map.adoc @@ -12,9 +12,9 @@ array, and insertions into an already occupied bucket are diverted to available vicinity of the original position. This type of data layout is known as _open addressing_. As a result of its using open addressing, the interface of `boost::unordered_flat_map` deviates in -a number of aspects from that of `boost::unordered_map`/`std::unordered_map`: +a number of aspects from that of `boost::unordered_map`/`std::unordered_map`: - - `value_type` must be move-constructible. + - `value_type` must be move-constructible. - Pointer stability is not kept under rehashing. - `begin()` is not constant-time. - There is no API for bucket handling (except `bucket_count`) or node extraction/insertion. @@ -58,7 +58,7 @@ namespace boost { using iterator = _implementation-defined_; using const_iterator = _implementation-defined_; - using stats = xref:stats_stats_type[__stats-type__]; // if statistics are xref:unordered_flat_map_boost_unordered_enable_stats[enabled] + using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:unordered_flat_map_boost_unordered_enable_stats[enabled] // construct/copy/destroy xref:#unordered_flat_map_default_constructor[unordered_flat_map](); @@ -343,7 +343,7 @@ The size of the bucket array can be automatically increased by a call to `insert greater than `max_load_factor()`, except possibly for small sizes where the implementation may decide to allow for higher loads. -If `xref:hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -353,7 +353,7 @@ at the expense of extra computational cost. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the container. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the container. Note that this option decreases the overall performance of many operations. --- @@ -653,7 +653,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate unordered_flat_map& operator=(unordered_flat_map const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -1400,7 +1400,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the container so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_flat_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_flat_map_boost_unordered_enable_stats[enabled]. --- @@ -1411,7 +1411,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the container. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_flat_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_flat_map_boost_unordered_enable_stats[enabled]. --- @@ -1440,7 +1440,7 @@ template ----- template using __iter-key-type__ = std::remove_const_t< - std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::tuple_element_t<0, xref:#unordered_flat_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- ==== __iter-mapped-type__ @@ -1448,7 +1448,7 @@ template ----- template using __iter-mapped-type__ = - std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]>; // exposition only + std::tuple_element_t<1, xref:#unordered_flat_map_iter_value_type[__iter-value-type__]>; // exposition only ----- ==== __iter-to-alloc-type__ @@ -1456,8 +1456,8 @@ template ----- template using __iter-to-alloc-type__ = std::pair< - std::add_const_t>>, - std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::add_const_t>>, + std::tuple_element_t<1, xref:#unordered_flat_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- === Equality Comparisons @@ -1535,7 +1535,7 @@ return original_size - c.size(); ``unordered_flat_map``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an unordered_flat_map to an archive @@ -1546,7 +1546,7 @@ Requires:;; `std::remove_const::type` and `std::remove_const::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -301,7 +301,7 @@ at the expense of extra computational cost. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the container. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the container. Note that this option decreases the overall performance of many operations. --- @@ -601,7 +601,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate unordered_flat_set& operator=(unordered_flat_set const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -1173,7 +1173,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the container so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_flat_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_flat_set_boost_unordered_enable_stats[enabled]. --- @@ -1184,7 +1184,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the container. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_flat_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_flat_set_boost_unordered_enable_stats[enabled]. --- @@ -1283,7 +1283,7 @@ return original_size - c.size(); ``unordered_flat_set``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an unordered_flat_set to an archive @@ -1294,7 +1294,7 @@ Requires:;; `value_type` is serializable (XML serializable), and it supports Boost.Serialization `save_construct_data`/`load_construct_data` protocol (automatically suported by https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] -types). +types). --- diff --git a/doc/modules/ROOT/pages/reference/unordered_multimap.adoc b/doc/modules/ROOT/pages/reference/unordered_multimap.adoc index 2c6d50b5..81af13e5 100644 --- a/doc/modules/ROOT/pages/reference/unordered_multimap.adoc +++ b/doc/modules/ROOT/pages/reference/unordered_multimap.adoc @@ -1420,7 +1420,7 @@ template ----- template using __iter-key-type__ = std::remove_const_t< - std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::tuple_element_t<0, xref:#unordered_multimap_iter_value_type[__iter-value-type__]>>; // exposition only ----- ==== __iter-mapped-type__ @@ -1428,7 +1428,7 @@ template ----- template using __iter-mapped-type__ = - std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]>; // exposition only + std::tuple_element_t<1, xref:#unordered_multimap_iter_value_type[__iter-value-type__]>; // exposition only ----- ==== __iter-to-alloc-type__ @@ -1436,8 +1436,8 @@ template ----- template using __iter-to-alloc-type__ = std::pair< - std::add_const_t>>, - std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::add_const_t>>, + std::tuple_element_t<1, xref:#unordered_multimap_iter_value_type[__iter-value-type__]>>; // exposition only ----- === Equality Comparisons @@ -1518,7 +1518,7 @@ return original_size - c.size(); ``unordered_multimap``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an unordered_multimap to an archive @@ -1529,7 +1529,7 @@ Requires:;; `std::remove_const::type` and `std::remove_const::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -356,7 +356,7 @@ at the expense of extra computational cost. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the container. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the container. Note that this option decreases the overall performance of many operations. --- @@ -392,7 +392,7 @@ The iterator category is at least a forward iterator. typedef _implementation-defined_ node_type; ---- -A class for holding extracted container elements, modelling +A class for holding extracted container elements, modelling https://en.cppreference.com/w/cpp/container/node_handle[NodeHandle]. --- @@ -687,7 +687,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate unordered_node_map& operator=(unordered_node_map const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -1504,7 +1504,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the container so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_node_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_node_map_boost_unordered_enable_stats[enabled]. --- @@ -1515,7 +1515,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the container. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_node_map_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_node_map_boost_unordered_enable_stats[enabled]. --- @@ -1544,7 +1544,7 @@ template ----- template using __iter-key-type__ = std::remove_const_t< - std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::tuple_element_t<0, xref:#unordered_node_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- ==== __iter-mapped-type__ @@ -1552,7 +1552,7 @@ template ----- template using __iter-mapped-type__ = - std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]>; // exposition only + std::tuple_element_t<1, xref:#unordered_node_map_iter_value_type[__iter-value-type__]>; // exposition only ----- ==== __iter-to-alloc-type__ @@ -1560,8 +1560,8 @@ template ----- template using __iter-to-alloc-type__ = std::pair< - std::add_const_t>>, - std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]>>; // exposition only + std::add_const_t>>, + std::tuple_element_t<1, xref:#unordered_node_map_iter_value_type[__iter-value-type__]>>; // exposition only ----- === Equality Comparisons @@ -1639,7 +1639,7 @@ return original_size - c.size(); ``unordered_node_map``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an unordered_node_map to an archive @@ -1650,7 +1650,7 @@ Requires:;; `std::remove_const::type` and `std::remove_const::value` is `true`, the hash function +If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]::value` is `true`, the hash function is used as-is; otherwise, a bit-mixing post-processing stage is added to increase the quality of hashing at the expense of extra computational cost. @@ -305,7 +305,7 @@ at the expense of extra computational cost. ==== `BOOST_UNORDERED_ENABLE_STATS` -Globally define this macro to enable xref:#stats[statistics calculation] for the container. Note +Globally define this macro to enable xref:reference/stats.adoc#stats[statistics calculation] for the container. Note that this option decreases the overall performance of many operations. --- @@ -341,7 +341,7 @@ The iterator category is at least a forward iterator. typedef _implementation-defined_ node_type; ---- -A class for holding extracted container elements, modelling +A class for holding extracted container elements, modelling https://en.cppreference.com/w/cpp/container/node_handle[NodeHandle]. --- @@ -639,7 +639,7 @@ Note:;; The destructor is applied to every element, and all memory is deallocate unordered_node_set& operator=(unordered_node_set const& other); ``` -The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, +The assignment operator. Destroys previously existing elements, copy-assigns the hash function and predicate from `other`, copy-assigns the allocator from `other` if `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, and finally inserts copies of the elements of `other`. @@ -1281,7 +1281,7 @@ stats get_stats() const; [horizontal] Returns:;; A statistical description of the insertion and lookup operations performed by the container so far. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_node_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_node_set_boost_unordered_enable_stats[enabled]. --- @@ -1292,7 +1292,7 @@ void reset_stats() noexcept; [horizontal] Effects:;; Sets to zero the internal statistics kept by the container. -Notes:;; Only available if xref:stats[statistics calculation] is xref:unordered_node_set_boost_unordered_enable_stats[enabled]. +Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_node_set_boost_unordered_enable_stats[enabled]. --- @@ -1391,7 +1391,7 @@ return original_size - c.size(); ``unordered_node_set``s can be archived/retrieved by means of link:../../../serialization/index.html[Boost.Serialization^] using the API provided -by this library. Both regular and XML archives are supported. +by this library. Both regular and XML archives are supported. ==== Saving an unordered_node_set to an archive @@ -1402,7 +1402,7 @@ Requires:;; `value_type` is serializable (XML serializable), and it supports Boost.Serialization `save_construct_data`/`load_construct_data` protocol (automatically suported by https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] -types). +types). --- diff --git a/doc/modules/ROOT/pages/regular.adoc b/doc/modules/ROOT/pages/regular.adoc index b259e3a4..3e1a343f 100644 --- a/doc/modules/ROOT/pages/regular.adoc +++ b/doc/modules/ROOT/pages/regular.adoc @@ -87,7 +87,7 @@ number of available buckets, this function is logically equivalent to: x.rehash(std::ceil(n / x.max_load_factor())) ``` + -See the <> on the `rehash` function. +See the xref:reference/unordered_map.adoc#unordered_map_rehash[reference for more details] on the `rehash` function. [#comparison] diff --git a/doc/modules/ROOT/pages/structures.adoc b/doc/modules/ROOT/pages/structures.adoc index 0208a236..d266267b 100644 --- a/doc/modules/ROOT/pages/structures.adoc +++ b/doc/modules/ROOT/pages/structures.adoc @@ -63,7 +63,7 @@ A more detailed description of Boost.Unordered's closed-addressing implementatio given in an https://bannalia.blogspot.com/2022/06/advancing-state-of-art-for.html[external article]. For more information on implementation rationale, read the -xref:rationale.adoc#rationale_open_addresing_containers[corresponding section]. +xref:rationale.adoc#rationale_closed_addressing_containers[corresponding section]. == Open-addressing Containers