fix broken cross-references

This commit is contained in:
Christian Mazakas 2025-01-07 11:57:39 -08:00
parent bebd8ccc50
commit d5faa1b5cf
18 changed files with 155 additions and 156 deletions

View File

@ -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]

View File

@ -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 <<hash_equality, more information on hash functions and
equality predicates in the next section>>.
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 <<unordered_flat_set,`boost::unordered_flat_set`>>, 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[]

View File

@ -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

View File

@ -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, <<unordered_map,boost::unordered_map>>
predicate and a hash function. For example, `xref:reference/unordered_map.adoc[boost::unordered_map]`
is declared as:
```cpp

View File

@ -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
<<hash_equality,Equality Predicates and Hash Functions>> section
for more details.
xref:hash_equality.adoc#hash_equality[Equality Predicates and Hash Functions], section for more details.

View File

@ -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]

View File

@ -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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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<FwdIterator>::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<class InputIterator>
-----
template<class InputIterator>
using __iter-key-type__ = std::remove_const_t<
std::tuple_element_t<0, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::tuple_element_t<0, xref:#concurrent_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
-----
==== __iter-mapped-type__
@ -1756,7 +1756,7 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-mapped-type__ =
std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
std::tuple_element_t<1, xref:#concurrent_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
-----
==== __iter-to-alloc-type__
@ -1764,8 +1764,8 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-to-alloc-type__ = std::pair<
std::add_const_t<std::tuple_element_t<0, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::add_const_t<std::tuple_element_t<0, xref:#concurrent_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#concurrent_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // 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<key_type>::type` and `std::remove_const<mapped_ty
are serializable (XML serializable), and they do support 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`.
---

View File

@ -45,7 +45,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_set_boost_unordered_enable_stats[enabled]
using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:concurrent_flat_set_boost_unordered_enable_stats[enabled]
// constants
static constexpr size_type xref:#concurrent_flat_set_constants[bulk_visit_size] = _implementation-defined_;
@ -337,7 +337,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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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<FwdIterator>::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>(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`.
---

View File

@ -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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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<FwdIterator>::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<class InputIterator>
-----
template<class InputIterator>
using __iter-key-type__ = std::remove_const_t<
std::tuple_element_t<0, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::tuple_element_t<0, xref:#concurrent_node_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
-----
==== __iter-mapped-type__
@ -1872,7 +1872,7 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-mapped-type__ =
std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
std::tuple_element_t<1, xref:#concurrent_node_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
-----
==== __iter-to-alloc-type__
@ -1880,8 +1880,8 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-to-alloc-type__ = std::pair<
std::add_const_t<std::tuple_element_t<0, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#concurrent_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::add_const_t<std::tuple_element_t<0, xref:#concurrent_node_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#concurrent_node_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // 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<key_type>::type` and `std::remove_const<mapped_ty
are serializable (XML serializable), and they do support 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`.
---

View File

@ -48,7 +48,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_set_boost_unordered_enable_stats[enabled]
using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:concurrent_node_set_boost_unordered_enable_stats[enabled]
// constants
static constexpr size_type xref:#concurrent_node_set_constants[bulk_visit_size] = _implementation-defined_;
@ -354,7 +354,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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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<FwdIterator>::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>(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`.
---

View File

@ -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__].
---

View File

@ -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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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<class InputIterator>
-----
template<class InputIterator>
using __iter-key-type__ = std::remove_const_t<
std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::tuple_element_t<0, xref:#unordered_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
-----
==== __iter-mapped-type__
@ -1448,7 +1448,7 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-mapped-type__ =
std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
std::tuple_element_t<1, xref:#unordered_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
-----
==== __iter-to-alloc-type__
@ -1456,8 +1456,8 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-to-alloc-type__ = std::pair<
std::add_const_t<std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::add_const_t<std::tuple_element_t<0, xref:#unordered_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#unordered_flat_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // 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<key_type>::type` and `std::remove_const<mapped_ty
are serializable (XML serializable), and they do support Boost.Serialization
`save_construct_data`/`load_construct_data` protocol (automatically suported by
https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^]
types).
types).
---

View File

@ -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_set` deviates in
a number of aspects from that of `boost::unordered_flat_set`/`std::unordered_flat_set`:
a number of aspects from that of `boost::unordered_flat_set`/`std::unordered_flat_set`:
- `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.
@ -53,7 +53,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_set_boost_unordered_enable_stats[enabled]
using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:unordered_flat_set_boost_unordered_enable_stats[enabled]
// construct/copy/destroy
xref:#unordered_flat_set_default_constructor[unordered_flat_set]();
@ -291,7 +291,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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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).
---

View File

@ -1420,7 +1420,7 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-key-type__ = std::remove_const_t<
std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::tuple_element_t<0, xref:#unordered_multimap_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
-----
==== __iter-mapped-type__
@ -1428,7 +1428,7 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-mapped-type__ =
std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
std::tuple_element_t<1, xref:#unordered_multimap_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
-----
==== __iter-to-alloc-type__
@ -1436,8 +1436,8 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-to-alloc-type__ = std::pair<
std::add_const_t<std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::add_const_t<std::tuple_element_t<0, xref:#unordered_multimap_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#unordered_multimap_iter_value_type[__iter-value-type__]<InputIterator>>>; // 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<key_type>::type` and `std::remove_const<mapped_ty
are serializable (XML serializable), and they do support Boost.Serialization
`save_construct_data`/`load_construct_data` protocol (automatically suported by
https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^]
types).
types).
---

View File

@ -10,7 +10,7 @@ being node-based, it provides pointer stability and node handling functionalitie
Its performance lies between those of `boost::unordered_map` and `boost::unordered_flat_map`.
As a result of its using open addressing, the interface of `boost::unordered_node_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`:
- `begin()` is not constant-time.
- There is no API for bucket handling (except `bucket_count`).
@ -57,7 +57,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:unordered_node_map_boost_unordered_enable_stats[enabled]
using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:unordered_node_map_boost_unordered_enable_stats[enabled]
// construct/copy/destroy
xref:#unordered_node_map_default_constructor[unordered_node_map]();
@ -346,7 +346,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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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<class InputIterator>
-----
template<class InputIterator>
using __iter-key-type__ = std::remove_const_t<
std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::tuple_element_t<0, xref:#unordered_node_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
-----
==== __iter-mapped-type__
@ -1552,7 +1552,7 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-mapped-type__ =
std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
std::tuple_element_t<1, xref:#unordered_node_map_iter_value_type[__iter-value-type__]<InputIterator>>; // exposition only
-----
==== __iter-to-alloc-type__
@ -1560,8 +1560,8 @@ template<class InputIterator>
-----
template<class InputIterator>
using __iter-to-alloc-type__ = std::pair<
std::add_const_t<std::tuple_element_t<0, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#unordered_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // exposition only
std::add_const_t<std::tuple_element_t<0, xref:#unordered_node_map_iter_value_type[__iter-value-type__]<InputIterator>>>,
std::tuple_element_t<1, xref:#unordered_node_map_iter_value_type[__iter-value-type__]<InputIterator>>>; // 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<key_type>::type` and `std::remove_const<mapped_ty
are serializable (XML serializable), and they do support Boost.Serialization
`save_construct_data`/`load_construct_data` protocol (automatically suported by
https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^]
types).
types).
---

View File

@ -10,7 +10,7 @@ being node-based, it provides pointer stability and node handling functionalitie
Its performance lies between those of `boost::unordered_set` and `boost::unordered_flat_set`.
As a result of its using open addressing, the interface of `boost::unordered_node_set` deviates in
a number of aspects from that of `boost::unordered_set`/`std::unordered_set`:
a number of aspects from that of `boost::unordered_set`/`std::unordered_set`:
- `begin()` is not constant-time.
- There is no API for bucket handling (except `bucket_count`).
@ -52,7 +52,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:unordered_node_set_boost_unordered_enable_stats[enabled]
using stats = xref:reference/stats.adoc#stats_stats_type[__stats-type__]; // if statistics are xref:unordered_node_set_boost_unordered_enable_stats[enabled]
// construct/copy/destroy
xref:#unordered_node_set_default_constructor[unordered_node_set]();
@ -295,7 +295,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]<Hash>::value` is `true`, the hash function
If `xref:reference/hash_traits.adoc#hash_traits_hash_is_avalanching[hash_is_avalanching]<Hash>::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).
---

View File

@ -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 <<unordered_map_rehash,reference for more details>> on the `rehash` function.
See the xref:reference/unordered_map.adoc#unordered_map_rehash[reference for more details] on the `rehash` function.
[#comparison]

View File

@ -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