<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">Class Template unordered_multimap</string>
    <string name="">:idprefix: unordered_multimap_</string>
    <string name="">`boost::unordered_multimap` — An unordered associative container that associates keys with another value. The same key can be stored multiple times.</string>
    <string name="">Synopsis</string>
    <string name=":247">---</string>
    <string name="">Description</string>
    <string name="">*Template Parameters*</string>
    <string name="">_Key_</string>
    <string name="">`Key` must be https://en.cppreference.com/w/cpp/named_req/Erasable[Erasable^] from the container (i.e. `allocator_traits` can destroy it).</string>
    <string name="">_T_</string>
    <string name="">`T` must be https://en.cppreference.com/w/cpp/named_req/Erasable[Erasable^] from the container (i.e. `allocator_traits` can destroy it).</string>
    <string name="">_Hash_</string>
    <string name="">A unary function object type that acts a hash function for a `Key`. It takes a single argument of type `Key` and returns a value of type `std::size_t`.</string>
    <string name="">_Pred_</string>
    <string name="">A binary function object that implements an equivalence relation on values of type `Key`. A binary function object that induces an equivalence relation on values of type `Key`. It takes two arguments of type `Key` and returns a value of type bool.</string>
    <string name="">_Allocator_</string>
    <string name="">An allocator whose value type is the same as the container\'s value type.</string>
    <string name="">Allocators using https://en.cppreference.com/w/cpp/named_req/Allocator#Fancy_pointers[fancy pointers] are supported.</string>
    <string name="">The elements are organized into buckets. Keys with the same hash code are stored in the same bucket.</string>
    <string name="">The number of buckets can be automatically increased by a call to insert, or as the result of calling rehash.</string>
    <string name="">Configuration macros</string>
    <string name="">`BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0`</string>
    <string name="">Globally define this macro to support loading of ``unordered_multimap``s saved to a Boost.Serialization archive with a version of Boost prior to Boost 1.84.</string>
    <string name="">Typedefs</string>
    <string name="">An iterator whose value type is `value_type`.</string>
    <string name=":294">The iterator category is at least a forward iterator.</string>
    <string name="">Convertible to `const_iterator`.</string>
    <string name=":298">---</string>
    <string name="">A constant iterator whose value type is `value_type`.</string>
    <string name=":307">The iterator category is at least a forward iterator.</string>
    <string name=":309">---</string>
    <string name="">An iterator with the same value type, difference type and pointer and reference type as iterator.</string>
    <string name="">A `local_iterator` object can be used to iterate through a single bucket.</string>
    <string name=":320">---</string>
    <string name="">A constant iterator with the same value type, difference type and pointer and reference type as const_iterator.</string>
    <string name="">A const_local_iterator object can be used to iterate through a single bucket.</string>
    <string name=":331">---</string>
    <string name="">See node_handle_map for details.</string>
    <string name=":340">---</string>
    <string name="">Constructors</string>
    <string name="">Default Constructor</string>
    <string name="">```c++ unordered_multimap(); ```</string>
    <string name="">Constructs an empty container using `hasher()` as the hash function, `key_equal()` as the key equality predicate, `allocator_type()` as the allocator and a maximum load factor of `1.0`.</string>
    <string name=":354">Postconditions:;; `size() == 0` Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":357">---</string>
    <string name="">Bucket Count Constructor</string>
    <string name="">```c++ explicit unordered_multimap(size_type n, const hasher&amp; hf = hasher(), const key_equal&amp; eql = key_equal(), const allocator_type&amp; a = allocator_type()); ```</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `hf` as the hash function, `eql` as the key equality predicate, `a` as the allocator and a maximum load factor of `1.0`.</string>
    <string name=":372">Postconditions:;; `size() == 0` Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":375">---</string>
    <string name="">Iterator Range Constructor</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `hf` as the hash function, `eql` as the key equality predicate, `a` as the allocator and a maximum load factor of `1.0` and inserts the elements from `[f, l)` into it.</string>
    <string name=":391">Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":393">---</string>
    <string name="">Copy Constructor</string>
    <string name="">```c++ unordered_multimap(const unordered_multimap&amp; other); ```</string>
    <string name="">The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.</string>
    <string name="">If `Allocator::select_on_container_copy_construction` exists and has the right signature, the allocator will be constructed from its result.</string>
    <string name=":405">Requires:;; `value_type` is copy constructible</string>
    <string name=":407">---</string>
    <string name="">Move Constructor</string>
    <string name="">```c++ unordered_multimap(unordered_multimap&amp;&amp; other); ```</string>
    <string name="">The move constructor.</string>
    <string name="">Notes:;; This is implemented using Boost.Move. Requires:;; `value_type` is move-constructible.</string>
    <string name=":420">---</string>
    <string name="">Iterator Range Constructor with Allocator</string>
    <string name="">```c++ template&lt;class InputIterator&gt; unordered_multimap(InputIterator f, InputIterator l, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty container using `a` as the allocator, with the default hash function and key equality predicate and a maximum load factor of `1.0` and inserts the elements from `[f, l)` into it.</string>
    <string name=":431">Requires:;; `hasher`, `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":433">---</string>
    <string name="">Allocator Constructor</string>
    <string name="">```c++ explicit unordered_multimap(const Allocator&amp; a); ```</string>
    <string name="">Constructs an empty container, using allocator `a`.</string>
    <string name=":442">---</string>
    <string name="">Copy Constructor with Allocator</string>
    <string name="">```c++ unordered_multimap(const unordered_multimap&amp; other, const Allocator&amp; a); ```</string>
    <string name="">Constructs an container, copying ``other``\'s contained elements, hash function, predicate, maximum load factor, but using allocator `a`.</string>
    <string name=":451">---</string>
    <string name="">Move Constructor with Allocator</string>
    <string name="">```c++ unordered_multimap(unordered_multimap&amp;&amp; other, const Allocator&amp; a); ```</string>
    <string name="">Construct a container moving ``other``\'s contained elements, and having the hash function, predicate and maximum load factor, but using allocate `a`.</string>
    <string name="">Notes:;; This is implemented using Boost.Move. Requires:;; `value_type` is move insertable.</string>
    <string name=":464">---</string>
    <string name="">Initializer List Constructor</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `hf` as the hash function, `eql` as the key equality predicate, `a` as the allocator and a maximum load factor of `1.0` and inserts the elements from `il` into it.</string>
    <string name=":479">Requires:;; If the defaults are used, `hasher`, `key_equal` and `allocator_type` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":481">---</string>
    <string name="">Bucket Count Constructor with Allocator</string>
    <string name="">```c++ unordered_multimap(size_type n, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `hf` as the hash function, the default hash function and key equality predicate, `a` as the allocator and a maximum load factor of `1.0`.</string>
    <string name="">Postconditions:;; `size() == 0` Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":493">---</string>
    <string name="">Bucket Count Constructor with Hasher and Allocator</string>
    <string name="">```c++ unordered_multimap(size_type n, const hasher&amp; hf, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `hf` as the hash function, the default key equality predicate, `a` as the allocator and a maximum load factor of `1.0`.</string>
    <string name="">Postconditions:;; `size() == 0` Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":506">---</string>
    <string name="">Iterator Range Constructor with Bucket Count and Allocator</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `a` as the allocator, with the default hash function and key equality predicate and a maximum load factor of `1.0` and inserts the elements from `[f, l)` into it.</string>
    <string name=":518">Requires:;; `hasher`, `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":520">---</string>
    <string name="">Iterator Range Constructor with Bucket Count and Hasher</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `hf` as the hash function, `a` as the allocator, with the default key equality predicate and a maximum load factor of `1.0` and inserts the elements from `[f, l)` into it.</string>
    <string name=":533">Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":535">---</string>
    <string name="">initializer_list Constructor with Allocator</string>
    <string name="">```c++ unordered_multimap(std::initializer_list&lt;value_type&gt; il, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty container using `a` as the allocator and a maximum load factor of 1.0 and inserts the elements from `il` into it.</string>
    <string name=":546">Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":548">---</string>
    <string name="">initializer_list Constructor with Bucket Count and Allocator</string>
    <string name="">```c++ unordered_multimap(std::initializer_list&lt;value_type&gt; il, size_type n, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `a` as the allocator and a maximum load factor of 1.0 and inserts the elements from `il` into it.</string>
    <string name=":559">Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":561">---</string>
    <string name="">initializer_list Constructor with Bucket Count and Hasher and Allocator</string>
    <string name="">```c++ unordered_multimap(std::initializer_list&lt;value_type&gt; il, size_type n, const hasher&amp; hf, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty container with at least `n` buckets, using `hf` as the hash function, `a` as the allocator and a maximum load factor of 1.0 and inserts the elements from `il` into it.</string>
    <string name=":573">Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":575">---</string>
    <string name="">Destructor</string>
    <string name="">```c++ ~unordered_multimap(); ```</string>
    <string name="">Note:;; The destructor is applied to every element, and all memory is deallocated</string>
    <string name=":586">---</string>
    <string name="">Assignment</string>
    <string name="">Copy Assignment</string>
    <string name="">```c++ unordered_multimap&amp; operator=(const unordered_multimap&amp; other); ```</string>
    <string name="">The assignment operator. Copies the contained elements, hash function, predicate and maximum load factor but not the allocator.</string>
    <string name="">If `Alloc::propagate_on_container_copy_assignment` exists and `Alloc::propagate_on_container_copy_assignment::value` is `true`, the allocator is overwritten, if not the copied elements are created using the existing allocator.</string>
    <string name=":601">Requires:;; `value_type` is copy constructible</string>
    <string name=":603">---</string>
    <string name="">Move Assignment</string>
    <string name="">```c++ unordered_multimap&amp; operator=(unordered_multimap&amp;&amp; other) noexcept(boost::allocator_traits&lt;Allocator&gt;::is_always_equal::value &amp;&amp; boost::is_nothrow_move_assignable_v&lt;Hash&gt; &amp;&amp; boost::is_nothrow_move_assignable_v&lt;Pred&gt;); ``` The move assignment operator.</string>
    <string name="">If `Alloc::propagate_on_container_move_assignment` exists and `Alloc::propagate_on_container_move_assignment::value` is `true`, the allocator is overwritten, if not the moved elements are created using the existing allocator.</string>
    <string name="">Requires:;; `value_type` is move constructible.</string>
    <string name=":619">---</string>
    <string name="">Initializer List Assignment</string>
    <string name="">```c++ unordered_multimap&amp; operator=(std::initializer_list&lt;value_type&gt; il); ```</string>
    <string name="">Assign from values in initializer list. All existing elements are either overwritten by the new elements or destroyed.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^] into the container and https://en.cppreference.com/w/cpp/named_req/CopyAssignable[CopyAssignable^].</string>
    <string name="">Iterators</string>
    <string name=":633">begin</string>
    <string name="">```c++ iterator begin() noexcept; const_iterator begin() const noexcept; ```</string>
    <string name="">Returns:;; An iterator referring to the first element of the container, or if the container is empty the past-the-end value for the container.</string>
    <string name=":642">---</string>
    <string name=":644">end</string>
    <string name="">"```c++ iterator       end() noexcept; const_iterator end() const noexcept; ```"</string>
    <string name="">Returns:;; An iterator which refers to the past-the-end value for the container.</string>
    <string name=":653">---</string>
    <string name=":655">cbegin</string>
    <string name="">```c++ const_iterator cbegin() const noexcept; ```</string>
    <string name="">Returns:;; A `const_iterator` referring to the first element of the container, or if the container is empty the past-the-end value for the container.</string>
    <string name=":663">---</string>
    <string name=":665">cend</string>
    <string name="">```c++ const_iterator cend() const noexcept; ```</string>
    <string name="">Returns:;; A `const_iterator` which refers to the past-the-end value for the container.</string>
    <string name=":673">---</string>
    <string name="">Size and Capacity</string>
    <string name="">empty</string>
    <string name="">```c++ [[nodiscard]] bool empty() const noexcept; ```</string>
    <string name="">Returns:;; `size() == 0`</string>
    <string name=":686">---</string>
    <string name="">size</string>
    <string name="">```c++ size_type size() const noexcept; ```</string>
    <string name="">Returns:;; `std::distance(begin(), end())`</string>
    <string name=":697">---</string>
    <string name="">max_size</string>
    <string name="">```c++ size_type max_size() const noexcept; ```</string>
    <string name="">Returns:;; `size()` of the largest possible container.</string>
    <string name=":708">---</string>
    <string name="">Modifiers</string>
    <string name="">emplace</string>
    <string name="">```c++ template&lt;class... Args&gt; iterator emplace(Args&amp;&amp;... args); ```</string>
    <string name="">Inserts an object, constructed with the arguments `args`, in the container.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] into `X` from `args`. Returns:;; An iterator pointing to the inserted element. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":727">---</string>
    <string name="">emplace_hint</string>
    <string name="">```c++ template&lt;class... Args&gt; iterator emplace_hint(const_iterator position, Args&amp;&amp;... args); ```</string>
    <string name="">Inserts an object, constructed with the arguments args, in the container.</string>
    <string name="">`position` is a suggestion to where the element should be inserted.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] into `X` from `args`. Returns:;; An iterator pointing to the inserted element. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. + + Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":748">---</string>
    <string name="">Copy Insert</string>
    <string name="">```c++ iterator insert(const value_type&amp; obj); ```</string>
    <string name=":755">Inserts `obj` in the container.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]. Returns:;; An iterator pointing to the inserted element. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":765">---</string>
    <string name="">Move Insert</string>
    <string name="">```c++ iterator insert(value_type&amp;&amp; obj); ```</string>
    <string name=":772">Inserts `obj` in the container.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. Returns:;; An iterator pointing to the inserted element. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":782">---</string>
    <string name="">Emplace Insert</string>
    <string name="">```c++ template&lt;class P&gt; iterator insert(P&amp;&amp; obj); ```</string>
    <string name="">Inserts an element into the container by performing `emplace(std::forward&lt;P&gt;(value))`.</string>
    <string name=":791">Only participates in overload resolution if `std::is_constructible&lt;value_type, P&amp;&amp;&gt;::value` is `true`.</string>
    <string name="">Returns:;; An iterator pointing to the inserted element.</string>
    <string name=":796">---</string>
    <string name="">Copy Insert with Hint</string>
    <string name="">```c++ iterator insert(const_iterator hint, const value_type&amp; obj); ``` Inserts `obj` in the container.</string>
    <string name=":804">`hint` is a suggestion to where the element should be inserted.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]. Returns:;; An iterator pointing to the inserted element. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. + + Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":816">---</string>
    <string name="">Move Insert with Hint</string>
    <string name="">```c++ iterator insert(const_iterator hint, value_type&amp;&amp; obj); ```</string>
    <string name=":823">Inserts `obj` in the container.</string>
    <string name=":825">`hint` is a suggestion to where the element should be inserted.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. Returns:;; An iterator pointing to the inserted element. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. + + Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":837">---</string>
    <string name="">Emplace Insert with Hint</string>
    <string name="">```c++ template&lt;class P&gt; iterator insert(const_iterator hint, P&amp;&amp; obj); ```</string>
    <string name="">Inserts an element into the container by performing `emplace_hint(hint, std::forward&lt;P&gt;(value))`.</string>
    <string name=":846">Only participates in overload resolution if `std::is_constructible&lt;value_type, P&amp;&amp;&gt;::value` is `true`.</string>
    <string name=":848">`hint` is a suggestion to where the element should be inserted.</string>
    <string name="">Returns:;; An iterator pointing to the inserted element. Notes:;; The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. + + Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":858">---</string>
    <string name="">Insert Iterator Range</string>
    <string name="">```c++ template&lt;class InputIterator&gt; void insert(InputIterator first, InputIterator last); ```</string>
    <string name=":865">Inserts a range of elements into the container.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] into `X` from `*first`. Throws:;; When inserting a single element, if an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":874">---</string>
    <string name="">Insert Initializer List</string>
    <string name="">```c++ void insert(std::initializer_list&lt;value_type&gt; il); ```</string>
    <string name=":881">Inserts a range of elements into the container.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^] into the container. Throws:;; When inserting a single element, if an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated.</string>
    <string name=":890">---</string>
    <string name="">Extract by Iterator</string>
    <string name="">```c++ node_type extract(const_iterator position); ```</string>
    <string name="">Removes the element pointed to by `position`.</string>
    <string name="">Returns:;; A `node_type` owning the element. Notes:;; A node extracted using this method can be inserted into a compatible `unordered_map`.</string>
    <string name=":903">---</string>
    <string name="">Extract by Key</string>
    <string name="">```c++ node_type extract(const key_type&amp; k); template&lt;class K&gt; node_type extract(K&amp;&amp; k); ```</string>
    <string name="">Removes an element with key equivalent to `k`.</string>
    <string name="">Returns:;; A `node_type` owning the element if found, otherwise an empty `node_type`. Throws:;; Only throws an exception if it is thrown by `hasher` or `key_equal`. Notes:;; A node extracted using this method can be inserted into a compatible `unordered_map`. + + The `template&lt;class K&gt;` overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs and neither `iterator` nor `const_iterator` are implicitly convertible from `K`. 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.</string>
    <string name=":920">---</string>
    <string name="">Insert with `node_handle`</string>
    <string name="">```c++ iterator insert(node_type&amp;&amp; nh); ```</string>
    <string name=":927">If `nh` is empty, has no effect.</string>
    <string name=":929">Otherwise inserts the element owned by `nh`.</string>
    <string name="">Requires:;; `nh` is empty or `nh.get_allocator()` is equal to the container\'s allocator. Returns:;; If `nh` was empty, returns `end()`. + + Otherwise returns an iterator pointing to the newly inserted element. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated. + + This can be used to insert a node extracted from a compatible `unordered_map`.</string>
    <string name=":943">---</string>
    <string name="">Insert with Hint and `node_handle`</string>
    <string name="">```c++ iterator insert(const_iterator hint, node_type&amp;&amp; nh); ```</string>
    <string name=":950">If `nh` is empty, has no effect.</string>
    <string name=":952">Otherwise inserts the element owned by `nh`.</string>
    <string name=":954">`hint` is a suggestion to where the element should be inserted.</string>
    <string name="">Requires:;; `nh` is empty or `nh.get_allocator()` is equal to the container\'s allocator. Returns:;; If `nh` was empty, returns `end()`. + + Otherwise returns an iterator pointing to the newly inserted element. Throws:;; If an exception is thrown by an operation other than a call to hasher the function has no effect. Notes:;; The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. + + Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. + + Pointers and references to elements are never invalidated. + + This can be used to insert a node extracted from a compatible `unordered_map`.</string>
    <string name=":970">---</string>
    <string name="">Erase by Position</string>
    <string name="">```c++ iterator erase(iterator position); iterator erase(const_iterator position); ```</string>
    <string name=":979">Erase the element pointed to by `position`.</string>
    <string name="">Returns:;; The iterator following `position` before the erasure. Throws:;; Only throws an exception if it is thrown by `hasher` or `key_equal`. Notes:;; In older versions this could be inefficient because it had to search through several buckets to find the position of the returned iterator. The data structure has been changed so that this is no longer the case, and the alternative erase methods have been deprecated.</string>
    <string name=":986">---</string>
    <string name="">Erase by Key</string>
    <string name="">```c++ size_type erase(const key_type&amp; k); template&lt;class K&gt; size_type erase(K&amp;&amp; k); ```</string>
    <string name="">Erase all elements with key equivalent to `k`.</string>
    <string name="">Returns:;; The number of elements erased. Throws:;; Only throws an exception if it is thrown by `hasher` or `key_equal`. Notes:;; The `template&lt;class K&gt;` overload only participates in overload resolution if `Hash::is_transparent` and `Pred::is_transparent` are valid member typedefs and neither `iterator` nor `const_iterator` are implicitly convertible from `K`. 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.</string>
    <string name=":1001">---</string>
    <string name="">Erase Range</string>
    <string name="">```c++ iterator erase(const_iterator first, const_iterator last); ```</string>
    <string name="">Erases the elements in the range from `first` to `last`.</string>
    <string name="">Returns:;; The iterator following the erased elements - i.e. `last`. Throws:;; Only throws an exception if it is thrown by `hasher` or `key_equal`. + + In this implementation, this overload doesn\'t call either function object\'s methods so it is no throw, but this might not be true in other implementations.</string>
    <string name=":1017">---</string>
    <string name="">quick_erase</string>
    <string name="">```c++ void quick_erase(const_iterator position); ```</string>
    <string name=":1024">Erase the element pointed to by `position`.</string>
    <string name=":1027">Throws:;; Only throws an exception if it is thrown by `hasher` or `key_equal`. + + In this implementation, this overload doesn\'t call either function object\'s methods so it is no throw, but this might not be true in other implementations. Notes:;; This method was implemented because returning an iterator to the next element from erase was expensive, but the container has been redesigned so that is no longer the case. So this method is now deprecated.</string>
    <string name=":1032">---</string>
    <string name="">erase_return_void</string>
    <string name="">```c++ void erase_return_void(const_iterator position); ```</string>
    <string name=":1039">Erase the element pointed to by `position`.</string>
    <string name=":1042">Throws:;; Only throws an exception if it is thrown by `hasher` or `key_equal`. + + In this implementation, this overload doesn\'t call either function object\'s methods so it is no throw, but this might not be true in other implementations. Notes:;; This method was implemented because returning an iterator to the next element from erase was expensive, but the container has been redesigned so that is no longer the case. So this method is now deprecated.</string>
    <string name=":1047">---</string>
    <string name="">swap</string>
    <string name="">```c++ void swap(unordered_multimap&amp; other) noexcept(boost::allocator_traits&lt;Allocator&gt;::is_always_equal::value &amp;&amp; boost::is_nothrow_swappable_v&lt;Hash&gt; &amp;&amp; boost::is_nothrow_swappable_v&lt;Pred&gt;); ```</string>
    <string name="">Swaps the contents of the container with the parameter.</string>
    <string name=":1059">If `Allocator::propagate_on_container_swap` is declared and `Allocator::propagate_on_container_swap::value` is `true` then the containers\' allocators are swapped. Otherwise, swapping with unequal allocators results in undefined behavior.</string>
    <string name="">Throws:;; Doesn\'t throw an exception unless it is thrown by the copy constructor or copy assignment operator of `key_equal` or `hasher`. Notes:;; The exception specifications aren\'t quite the same as the C++11 standard, as the equality predicate and hash function are swapped using their copy constructors.</string>
    <string name=":1065">---</string>
    <string name="">clear</string>
    <string name="">```c++ void clear() noexcept; ```</string>
    <string name="">Erases all elements in the container.</string>
    <string name="">Postconditions:;; `size() == 0` Throws:;; Never throws an exception.</string>
    <string name=":1078">---</string>
    <string name="">merge</string>
    <string name="">```c++ template&lt;class H2, class P2&gt; void merge(unordered_multimap&lt;Key, T, H2, P2, Allocator&gt;&amp; source); template&lt;class H2, class P2&gt; void merge(unordered_multimap&lt;Key, T, H2, P2, Allocator&gt;&amp;&amp; source); template&lt;class H2, class P2&gt; void merge(unordered_map&lt;Key, T, H2, P2, Allocator&gt;&amp; source); template&lt;class H2, class P2&gt; void merge(unordered_map&lt;Key, T, H2, P2, Allocator&gt;&amp;&amp; source); ```</string>
    <string name="">Attempt to \"merge\" two containers by iterating `source` and extracting all nodes in `source` and inserting them into `*this`.</string>
    <string name="">Because `source` can have a different hash function and key equality predicate, the key of each node in `source` is rehashed using `this\\-&gt;hash_function()` and then, if required, compared using `this\\-&gt;key_eq()`.</string>
    <string name="">The behavior of this function is undefined if `this\\-&gt;get_allocator() != source.get_allocator()`.</string>
    <string name="">This function does not copy or move any elements and instead simply relocates the nodes from `source` into `*this`.</string>
    <string name="">Notes:;; + --</string>
    <string name="">Pointers and references to transferred elements remain valid.</string>
    <string name="">Invalidates iterators to transferred elements.</string>
    <string name="">Invalidates iterators belonging to `*this`.</string>
    <string name="">Iterators to non-transferred elements in `source` remain valid.</string>
    <string name="">--</string>
    <string name=":1112">---</string>
    <string name="">Observers</string>
    <string name="">get_allocator</string>
    <string name="">``` allocator_type get_allocator() const; ```</string>
    <string name=":1121">---</string>
    <string name="">hash_function</string>
    <string name="">``` hasher hash_function() const; ```</string>
    <string name="">Returns:;; The container\'s hash function.</string>
    <string name=":1131">---</string>
    <string name="">key_eq</string>
    <string name="">``` key_equal key_eq() const; ```</string>
    <string name="">Returns:;; The container\'s key equality predicate</string>
    <string name=":1141">---</string>
    <string name="">Lookup</string>
    <string name="">find</string>
    <string name="">"```c++ iterator         find(const key_type&amp; k); const_iterator   find(const key_type&amp; k) const; template&lt;class K&gt; iterator       find(const K&amp; k); template&lt;class K&gt; const_iterator find(const K&amp; k) const; template&lt;typename CompatibleKey, typename CompatibleHash, typename CompatiblePredicate&gt; iterator       find(CompatibleKey const&amp; k, CompatibleHash const&amp; hash, CompatiblePredicate const&amp; eq); template&lt;typename CompatibleKey, typename CompatibleHash, typename CompatiblePredicate&gt; const_iterator find(CompatibleKey const&amp; k, CompatibleHash const&amp; hash, CompatiblePredicate const&amp; eq) const;"</string>
    <string name="">```</string>
    <string name="">Returns:;; An iterator pointing to an element with key equivalent to `k`, or `b.end()` if no such element exists. Notes:;; The templated overloads containing `CompatibleKey`, `CompatibleHash` and `CompatiblePredicate` are non-standard extensions which allow you to use a compatible hash function and equality predicate for a key of a different type in order to avoid an expensive type cast. In general, its use is not encouraged and instead the `K` member function templates should be used. + + The `template&lt;class K&gt;` 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.</string>
    <string name=":1168">---</string>
    <string name="">count</string>
    <string name="">"```c++ size_type        count(const key_type&amp; k) const; template&lt;class K&gt; size_type      count(const K&amp; k) const; ```"</string>
    <string name="">Returns:;; The number of elements with key equivalent to `k`. Notes:;; The `template&lt;class K&gt;` 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.</string>
    <string name=":1181">---</string>
    <string name="">contains</string>
    <string name="">"```c++ bool             contains(const key_type&amp; k) const; template&lt;class K&gt; bool           contains(const K&amp; k) const; ```"</string>
    <string name="">Returns:;; A boolean indicating whether or not there is an element with key equal to `key` in the container Notes:;; The `template&lt;class K&gt;` 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.</string>
    <string name=":1194">---</string>
    <string name="">equal_range</string>
    <string name="">"```c++ std::pair&lt;iterator, iterator&gt;               equal_range(const key_type&amp; k); std::pair&lt;const_iterator, const_iterator&gt;   equal_range(const key_type&amp; k) const; template&lt;class K&gt; std::pair&lt;iterator, iterator&gt;             equal_range(const K&amp; k); template&lt;class K&gt; std::pair&lt;const_iterator, const_iterator&gt; equal_range(const K&amp; k) const; ```"</string>
    <string name="">Returns:;; A range containing all elements with key equivalent to `k`. If the container doesn\'t contain any such elements, returns `std::make_pair(b.end(), b.end())`. Notes:;; The `template&lt;class K&gt;` 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.</string>
    <string name=":1210">---</string>
    <string name="">Bucket Interface</string>
    <string name="">bucket_count</string>
    <string name="">```c++ size_type bucket_count() const noexcept; ```</string>
    <string name="">Returns:;; The number of buckets.</string>
    <string name=":1222">---</string>
    <string name="">max_bucket_count</string>
    <string name="">```c++ size_type max_bucket_count() const noexcept; ```</string>
    <string name="">Returns:;; An upper bound on the number of buckets.</string>
    <string name=":1232">---</string>
    <string name="">bucket_size</string>
    <string name="">```c++ size_type bucket_size(size_type n) const; ```</string>
    <string name="">Requires:;; `n &lt; bucket_count()` Returns:;; The number of elements in bucket `n`.</string>
    <string name=":1243">---</string>
    <string name="">bucket</string>
    <string name="">```c++ size_type bucket(const key_type&amp; k) const; template&lt;class K&gt; size_type bucket(const K&amp; k) const; ```</string>
    <string name="">Returns:;; The index of the bucket which would contain an element with key `k`. Postconditions:;; The return value is less than `bucket_count()`. Notes:;; The `template&lt;class K&gt;` 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.</string>
    <string name=":1256">---</string>
    <string name=":1258">begin</string>
    <string name="">```c++ local_iterator begin(size_type n); const_local_iterator begin(size_type n) const; ```</string>
    <string name="">Requires:;; `n` shall be in the range `[0, bucket_count())`. Returns:;; A local iterator pointing the first element in the bucket with index `n`.</string>
    <string name=":1269">---</string>
    <string name=":1271">end</string>
    <string name="">```c++ local_iterator end(size_type n); const_local_iterator end(size_type n) const; ```</string>
    <string name="">Requires:;; `n` shall be in the range `[0, bucket_count())`. Returns:;; A local iterator pointing the \'one past the end\' element in the bucket with index `n`.</string>
    <string name=":1281">---</string>
    <string name=":1283">cbegin</string>
    <string name="">```c++ const_local_iterator cbegin(size_type n) const; ```</string>
    <string name="">Requires:;; `n` shall be in the range `[0, bucket_count())`. Returns:;; A constant local iterator pointing the first element in the bucket with index `n`.</string>
    <string name=":1292">---</string>
    <string name=":1294">cend</string>
    <string name="">```c++ const_local_iterator cend(size_type n) const; ```</string>
    <string name="">Requires:;; `n` shall be in the range `[0, bucket_count())`. Returns:;; A constant local iterator pointing the \'one past the end\' element in the bucket with index `n`.</string>
    <string name=":1303">---</string>
    <string name="">Hash Policy</string>
    <string name="">load_factor</string>
    <string name="">```c++ float load_factor() const noexcept; ```</string>
    <string name="">Returns:;; The average number of elements per bucket.</string>
    <string name=":1315">---</string>
    <string name="">max_load_factor</string>
    <string name="">```c++ float max_load_factor() const noexcept; ```</string>
    <string name="">Returns:;; Returns the current maximum load factor.</string>
    <string name=":1326">---</string>
    <string name="">Set max_load_factor</string>
    <string name="">```c++ void max_load_factor(float z); ```</string>
    <string name="">Effects:;; Changes the container\'s maximum load factor, using `z` as a hint.</string>
    <string name=":1336">---</string>
    <string name="">rehash</string>
    <string name="">```c++ void rehash(size_type n); ```</string>
    <string name="">Changes the number of buckets so that there are at least `n` buckets, and so that the load factor is less than or equal to the maximum load factor. When applicable, this will either grow or shrink the `bucket_count()` associated with the container.</string>
    <string name="">When `size() == 0`, `rehash(0)` will deallocate the underlying buckets array.</string>
    <string name=":1348">Invalidates iterators, and changes the order of elements. Pointers and references to elements are not invalidated.</string>
    <string name=":1351">Throws:;; The function has no effect if an exception is thrown, unless it is thrown by the container\'s hash function or comparison function.</string>
    <string name=":1353">---</string>
    <string name="">reserve</string>
    <string name="">```c++ void reserve(size_type n); ```</string>
    <string name="">Equivalent to `a.rehash(ceil(n / a.max_load_factor()))`, or `a.rehash(1)` if `n &gt; 0` and `a.max_load_factor() == std::numeric_limits&lt;float&gt;::infinity()`.</string>
    <string name="">Similar to `rehash`, this function can be used to grow or shrink the number of buckets in the container.</string>
    <string name=":1364">Invalidates iterators, and changes the order of elements. Pointers and references to elements are not invalidated.</string>
    <string name=":1367">Throws:;; The function has no effect if an exception is thrown, unless it is thrown by the container\'s hash function or comparison function.</string>
    <string name=":1369">---</string>
    <string name="">Deduction Guides</string>
    <string name="">A deduction guide will not participate in overload resolution if any of the following are true:</string>
    <string name="">- It has an `InputIterator` template parameter and a type that does not qualify as an input iterator is deduced for that parameter. - It has an `Allocator` template parameter and a type that does not qualify as an allocator is deduced for that parameter. - It has a `Hash` template parameter and an integral type or a type that qualifies as an allocator is deduced for that parameter. - It has a `Pred` template parameter and a type that qualifies as an allocator is deduced for that parameter.</string>
    <string name="">A `size_­type` parameter type in a deduction guide refers to the `size_­type` member type of the container type deduced by the deduction guide. Its default value coincides with the default value of the constructor selected.</string>
    <string name="">__iter-value-type__</string>
    <string name="">__iter-key-type__</string>
    <string name="">__iter-mapped-type__</string>
    <string name="">__iter-to-alloc-type__</string>
    <string name="">Equality Comparisons</string>
    <string name="">operator</string>
    <string name="">```c++ template&lt;class Key, class T, class Hash, class Pred, class Alloc&gt; bool operator==(const unordered_multimap&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, const unordered_multimap&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y); ```</string>
    <string name="">Return `true` if `x.size() == y.size()` and for every equivalent key group in `x`, there is a group in `y` for the same key, which is a permutation (using `operator==` to compare the value types).</string>
    <string name=":1428">Notes:;; Behavior is undefined if the two containers don\'t have equivalent equality predicates.</string>
    <string name=":1430">---</string>
    <string name="">operator!</string>
    <string name="">```c++ template&lt;class Key, class T, class Hash, class Pred, class Alloc&gt; bool operator!=(const unordered_multimap&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, const unordered_multimap&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y); ```</string>
    <string name="">Return `false` if `x.size() == y.size()` and for every equivalent key group in `x`, there is a group in `y` for the same key, which is a permutation (using `operator==` to compare the value types).</string>
    <string name=":1442">Notes:;; Behavior is undefined if the two containers don\'t have equivalent equality predicates.</string>
    <string name=":1444">---</string>
    <string name="">Swap</string>
    <string name="">```c++ template&lt;class Key, class T, class Hash, class Pred, class Alloc&gt; void swap(unordered_multimap&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, unordered_multimap&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y) noexcept(noexcept(x.swap(y))); ```</string>
    <string name="">Swaps the contents of `x` and `y`.</string>
    <string name=":1456">If `Allocator::propagate_on_container_swap` is declared and `Allocator::propagate_on_container_swap::value` is `true` then the containers\' allocators are swapped. Otherwise, swapping with unequal allocators results in undefined behavior.</string>
    <string name="">Effects:;; `x.swap(y)` Throws:;; Doesn\'t throw an exception unless it is thrown by the copy constructor or copy assignment operator of `key_equal` or `hasher`. Notes:;; The exception specifications aren\'t quite the same as the C++11 standard, as the equality predicate and hash function are swapped using their copy constructors.</string>
    <string name=":1463">---</string>
    <string name="">erase_if</string>
    <string name="">```c++ template&lt;class K, class T, class H, class P, class A, class Predicate&gt; typename unordered_multimap&lt;K, T, H, P, A&gt;::size_type erase_if(unordered_multimap&lt;K, T, H, P, A&gt;&amp; c, Predicate pred); ```</string>
    <string name="">Traverses the container `c` and removes all elements for which the supplied predicate returns `true`.</string>
    <string name="">Returns:;; The number of erased elements. Notes:;; Equivalent to: + + ```c++ auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last; ) { if (pred(*i)) { i = c.erase(i); } else { ++i; } } return original_size - c.size(); ``` + Note that the references passed to `pred` are non-const.</string>
    <string name="">Serialization</string>
    <string name="">``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.</string>
    <string name="">Saving an unordered_multimap to an archive</string>
    <string name="">Saves all the elements of an `unordered_multimap` `x` to an archive (XML archive) `ar`.</string>
    <string name="">Requires:;; `std::remove_const&lt;key_type&gt;::type` and `std::remove_const&lt;mapped_type&gt;::type` 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).</string>
    <string name=":1509">---</string>
    <string name="">Loading an unordered_multimap from an archive</string>
    <string name="">Deletes all preexisting elements of an `unordered_multimap` `x` and inserts from an archive (XML archive) `ar` restored copies of the elements of the original `unordered_multimap` `other` saved to the storage read by `ar`.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `(std::remove_const&lt;key_type&gt;::type&amp;&amp;, std::remove_const&lt;mapped_type&gt;::type&amp;&amp;)`. `x.key_equal()` is functionally equivalent to `other.key_equal()`. Note:;; If the archive was saved using a release of Boost prior to Boost 1.84, the configuration macro `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` has to be globally defined for this operation to succeed; otherwise, an exception is thrown.</string>
    <string name=":1525">---</string>
    <string name="">Saving an iterator/const_iterator to an archive</string>
    <string name="">Saves the positional information of an `iterator` (`const_iterator`) `it` to an archive (XML archive) `ar`. `it` can be and `end()` iterator.</string>
    <string name="">Requires:;; The `unordered_multimap` `x` pointed to by `it` has been previously saved to `ar`, and no modifying operations have been issued on `x` between saving of `x` and saving of `it`.</string>
    <string name=":1537">---</string>
    <string name="">Loading an iterator/const_iterator from an archive</string>
    <string name="">Makes an `iterator` (`const_iterator`) `it` point to the restored position of the original `iterator` (`const_iterator`) saved to the storage read by an archive (XML archive) `ar`.</string>
    <string name="">Requires:;; If `x` is the `unordered_multimap` `it` points to, no modifying operations have been issued on `x` between loading of `x` and loading of `it`.</string>
</resources>
