<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">Class Template unordered_flat_set</string>
    <string name="">:idprefix: unordered_flat_set_</string>
    <string name="">`boost::unordered_flat_set` — An open-addressing unordered associative container that stores unique values.</string>
    <string name="">The performance of `boost::unordered_flat_set` is much better than that of `boost::unordered_set` or other implementations of `std::unordered_set`. Unlike standard unordered associative containers, which are node-based, the elements of a `boost::unordered_flat_set` are held directly in the bucket array, and insertions into an already occupied bucket are diverted to available buckets in the vicinity of the original position. This type of data layout is known as _open addressing_.</string>
    <string name="">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`:</string>
    <string name="">- `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. - The maximum load factor of the container is managed internally and can\'t be set by the user.</string>
    <string name="">Other than this, `boost::unordered_flat_set` is mostly a drop-in replacement of node-based standard unordered associative containers.</string>
    <string name="">Synopsis</string>
    <string name=":235">---</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/MoveInsertable[MoveInsertable^] into the container</string>
    <string name="">and https://en.cppreference.com/w/cpp/named_req/Erasable[Erasable^] from the container.</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 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 of the container are held into an internal _bucket array_. An element is inserted into a bucket determined by its hash code, but if the bucket is already occupied (a _collision_), an available one in the vicinity of the original position is used.</string>
    <string name="">The size of the bucket array can be automatically increased by a call to `insert`/`emplace`, or as a result of calling `rehash`/`reserve`. The _load factor_ of the container (number of elements divided by number of buckets) is never greater than `max_load_factor()`, except possibly for small sizes where the implementation may decide to allow for higher loads.</string>
    <string name="">If `link:../../../../../container_hash/doc/html/hash.html#ref_hash_is_avalanchinghash[hash_is_avalanching]&lt;Hash&gt;::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.</string>
    <string name=":273">---</string>
    <string name="">Configuration Macros</string>
    <string name="">`BOOST_UNORDERED_ENABLE_STATS`</string>
    <string name="">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.</string>
    <string name=":282">---</string>
    <string name="">Typedefs</string>
    <string name=":291">A constant iterator whose value type is `value_type`.</string>
    <string name=":293">The iterator category is at least a forward iterator.</string>
    <string name="">Convertible to `const_iterator`.</string>
    <string name=":297">---</string>
    <string name=":304">A constant iterator whose value type is `value_type`.</string>
    <string name=":306">The iterator category is at least a forward iterator.</string>
    <string name="">Constructors</string>
    <string name="">Default Constructor</string>
    <string name="">```c++ unordered_flat_set(); ```</string>
    <string name="">Constructs an empty container using `hasher()` as the hash function, `key_equal()` as the key equality predicate and `allocator_type()` as the allocator.</string>
    <string name=":319">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=":322">---</string>
    <string name="">Bucket Count Constructor</string>
    <string name="">```c++ explicit unordered_flat_set(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, and `a` as the allocator.</string>
    <string name=":336">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=":339">---</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 and `a` as the allocator, and inserts the elements from `[f, l)` into it.</string>
    <string name=":355">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="">Copy Constructor</string>
    <string name="">```c++ unordered_flat_set(unordered_flat_set const&amp; other); ```</string>
    <string name="">The copy constructor. Copies the contained elements, hash function, predicate 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="">Requires:;; `value_type` is copy constructible</string>
    <string name=":371">---</string>
    <string name="">Move Constructor</string>
    <string name="">```c++ unordered_flat_set(unordered_flat_set&amp;&amp; other); ```</string>
    <string name="">The move constructor. The internal bucket array of `other` is transferred directly to the new container. The hash function, predicate and allocator are moved-constructed from `other`. If statistics are xref:unordered_flat_set_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` and calls `other.reset_stats()`.</string>
    <string name=":383">---</string>
    <string name="">Iterator Range Constructor with Allocator</string>
    <string name="">```c++ template&lt;class InputIterator&gt; unordered_flat_set(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 inserts the elements from `[f, l)` into it.</string>
    <string name=":394">Requires:;; `hasher`, `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":396">---</string>
    <string name="">Allocator Constructor</string>
    <string name="">```c++ explicit unordered_flat_set(Allocator const&amp; a); ```</string>
    <string name="">Constructs an empty container, using allocator `a`.</string>
    <string name=":405">---</string>
    <string name="">Copy Constructor with Allocator</string>
    <string name="">```c++ unordered_flat_set(unordered_flat_set const&amp; other, Allocator const&amp; a); ```</string>
    <string name="">Constructs a container, copying ``other``\'s contained elements, hash function, and predicate, but using allocator `a`.</string>
    <string name=":414">---</string>
    <string name="">Move Constructor with Allocator</string>
    <string name="">```c++ unordered_flat_set(unordered_flat_set&amp;&amp; other, Allocator const&amp; a); ```</string>
    <string name="">If `a == other.get_allocator()`, the elements of `other` are transferred directly to the new container; otherwise, elements are moved-constructed from those of `other`. The hash function and predicate are moved-constructed from `other`, and the allocator is copy-constructed from `a`. If statistics are xref:unordered_flat_set_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` iff `a == other.get_allocator()`, and always calls `other.reset_stats()`.</string>
    <string name=":428">---</string>
    <string name="">Move Constructor from concurrent_flat_set</string>
    <string name="">```c++ unordered_flat_set(concurrent_flat_set&lt;Key, Hash, Pred, Allocator&gt;&amp;&amp; other); ```</string>
    <string name="">Move construction from a xref:#concurrent_flat_set[`concurrent_flat_set`]. The internal bucket array of `other` is transferred directly to the new container. The hash function, predicate and allocator are moved-constructed from `other`. If statistics are xref:unordered_flat_set_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` and calls `other.reset_stats()`.</string>
    <string name="">Complexity:;; Constant time. Concurrency:;; Blocking on `other`.</string>
    <string name=":446">---</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 and `a`, and inserts the elements from `il` into it.</string>
    <string name=":461">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=":463">---</string>
    <string name="">Bucket Count Constructor with Allocator</string>
    <string name="">```c++ unordered_flat_set(size_type n, allocator_type const&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 and `a` as the allocator.</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=":476">---</string>
    <string name="">Bucket Count Constructor with Hasher and Allocator</string>
    <string name="">```c++ unordered_flat_set(size_type n, hasher const&amp; hf, allocator_type const&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 and `a` as the allocator.</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=":489">---</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 and default hash function and key equality predicate, and inserts the elements from `[f, l)` into it.</string>
    <string name=":501">Requires:;; `hasher`, `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":503">---</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 inserts the elements from `[f, l)` into it.</string>
    <string name=":516">Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":518">---</string>
    <string name="">initializer_list Constructor with Allocator</string>
    <string name="">```c++ unordered_flat_set(std::initializer_list&lt;value_type&gt; il, const allocator_type&amp; a); ```</string>
    <string name="">Constructs an empty container using `a` and default hash function and key equality predicate, and inserts the elements from `il` into it.</string>
    <string name=":529">Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":531">---</string>
    <string name="">initializer_list Constructor with Bucket Count and Allocator</string>
    <string name="">```c++ unordered_flat_set(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` and default hash function and key equality predicate, and inserts the elements from `il` into it.</string>
    <string name=":542">Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":544">---</string>
    <string name="">initializer_list Constructor with Bucket Count and Hasher and Allocator</string>
    <string name="">```c++ unordered_flat_set(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 default key equality predicate,and inserts the elements from `il` into it.</string>
    <string name=":556">Requires:;; `key_equal` needs to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":558">---</string>
    <string name="">Destructor</string>
    <string name="">```c++ ~unordered_flat_set(); ```</string>
    <string name="">Note:;; The destructor is applied to every element, and all memory is deallocated</string>
    <string name=":569">---</string>
    <string name="">Assignment</string>
    <string name="">Copy Assignment</string>
    <string name="">```c++ unordered_flat_set&amp; operator=(unordered_flat_set const&amp; other); ```</string>
    <string name="">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`.</string>
    <string name=":584">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]</string>
    <string name=":586">---</string>
    <string name="">Move Assignment</string>
    <string name="">```c++ unordered_flat_set&amp; operator=(unordered_flat_set&amp;&amp; other) noexcept((boost::allocator_traits&lt;Allocator&gt;::is_always_equal::value || boost::allocator_traits&lt;Allocator&gt;::propagate_on_container_move_assignment::value) &amp;&amp; std::is_same&lt;pointer, value_type*&gt;::value); ``` The move assignment operator. Destroys previously existing elements, swaps the hash function and predicate from `other`, and move-assigns the allocator from `other` if `Alloc::propagate_on_container_move_assignment` exists and `Alloc::propagate_on_container_move_assignment::value` is `true`. If at this point the allocator is equal to `other.get_allocator()`, the internal bucket array of `other` is transferred directly to the new container; otherwise, inserts move-constructed copies of the elements of `other`. If statistics are xref:unordered_flat_set_boost_unordered_enable_stats[enabled], transfers the internal statistical information from `other` iff the final allocator is equal to `other.get_allocator()`, and always calls `other.reset_stats()`.</string>
    <string name=":603">---</string>
    <string name="">Initializer List Assignment</string>
    <string name="">```c++ unordered_flat_set&amp; operator=(std::initializer_list&lt;value_type&gt; il); ```</string>
    <string name="">Assign from values in initializer list. All previously existing elements are destroyed.</string>
    <string name=":613">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]</string>
    <string name="">Iterators</string>
    <string name="">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. Complexity:;; O(`bucket_count()`)</string>
    <string name=":627">---</string>
    <string name="">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=":638">---</string>
    <string name="">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. Complexity:;; O(`bucket_count()`)</string>
    <string name=":649">---</string>
    <string name="">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=":659">---</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=":672">---</string>
    <string name="">size</string>
    <string name="">```c++ size_type size() const noexcept; ```</string>
    <string name="">Returns:;; `std::distance(begin(), end())`</string>
    <string name=":683">---</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=":694">---</string>
    <string name="">Modifiers</string>
    <string name="">emplace</string>
    <string name="">```c++ template&lt;class... Args&gt; std::pair&lt;iterator, bool&gt; emplace(Args&amp;&amp;... args); ```</string>
    <string name=":703">Inserts an object, constructed with the arguments `args`, in the container if and only if there is no element in the container with an equivalent key.</string>
    <string name=":706">Requires:;; `value_type` is constructible from `args`. Returns:;; The `bool` component of the return type is `true` if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. +</string>
    <string name=":713">---</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=":720">Inserts an object, constructed with the arguments `args`, in the container if and only if there is no element in the container with an equivalent key.</string>
    <string name="">`position` is a suggestion to where the element should be inserted. This implementation ignores it.</string>
    <string name=":725">Requires:;; `value_type` is constructible from `args`. Returns:;; The `bool` component of the return type is `true` if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. +</string>
    <string name=":732">---</string>
    <string name="">Copy Insert</string>
    <string name="">```c++ std::pair&lt;iterator, bool&gt; insert(const value_type&amp; obj); ```</string>
    <string name=":739">Inserts `obj` in the container if and only if there is no element in the container with an equivalent key.</string>
    <string name=":742">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]. Returns:;; The `bool` component of the return type is `true` if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load.</string>
    <string name=":749">---</string>
    <string name="">Move Insert</string>
    <string name="">```c++ std::pair&lt;iterator, bool&gt; insert(value_type&amp;&amp; obj); ```</string>
    <string name=":756">Inserts `obj` in the container if and only if there is no element in the container with an equivalent key.</string>
    <string name=":759">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. Returns:;; The `bool` component of the return type is `true` if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load.</string>
    <string name=":766">---</string>
    <string name="">Transparent Insert</string>
    <string name="">```c++ template&lt;class K&gt; std::pair&lt;iterator, bool&gt; insert(K&amp;&amp; k); ```</string>
    <string name=":773">Inserts an element constructed from `std::forward&lt;K&gt;(k)` in the container if and only if there is no element in the container with an equivalent key.</string>
    <string name=":776">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. Returns:;; The bool component of the return type is true if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. + + This 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=":785">---</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 if and only if there is no element in the container with an equivalent key.</string>
    <string name=":793">`hint` is a suggestion to where the element should be inserted. This implementation ignores it.</string>
    <string name=":796">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^]. Returns:;; The `bool` component of the return type is `true` if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load.</string>
    <string name=":803">---</string>
    <string name="">Move Insert with Hint</string>
    <string name="">```c++ iterator insert(const_iterator hint, value_type&amp;&amp; obj); ```</string>
    <string name=":810">Inserts `obj` in the container if and only if there is no element in the container with an equivalent key.</string>
    <string name=":812">`hint` is a suggestion to where the element should be inserted. This implementation ignores it.</string>
    <string name=":815">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. Returns:;; The `bool` component of the return type is `true` if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load.</string>
    <string name=":822">---</string>
    <string name="">Transparent Insert with Hint</string>
    <string name="">```c++ template&lt;class K&gt; std::pair&lt;iterator, bool&gt; insert(const_iterator hint, K&amp;&amp; k); ```</string>
    <string name=":829">Inserts an element constructed from `std::forward&lt;K&gt;(k)` in the container if and only if there is no element in the container with an equivalent key.</string>
    <string name=":831">`hint` is a suggestion to where the element should be inserted. This implementation ignores it.</string>
    <string name=":834">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] from `k`. Returns:;; The bool component of the return type is true if an insert took place. + + If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. Throws:;; If an exception is thrown by an operation other than a call to `hasher` the function has no effect. Notes:;; Can invalidate iterators, pointers and references, but only if the insert causes the load to be greater than the maximum load. + + This 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=":843">---</string>
    <string name="">Insert Iterator Range</string>
    <string name="">```c++ template&lt;class InputIterator&gt; void insert(InputIterator first, InputIterator last); ```</string>
    <string name=":850">Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent key.</string>
    <string name="">Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] into the container 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, pointers and references, but only if the insert causes the load to be greater than the maximum load.</string>
    <string name=":857">---</string>
    <string name="">Insert Initializer List</string>
    <string name="">```c++ void insert(std::initializer_list&lt;value_type&gt;); ```</string>
    <string name=":864">Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent key.</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, pointers and references, but only if the insert causes the load to be greater than the maximum load.</string>
    <string name=":871">---</string>
    <string name="">Erase by Position</string>
    <string name="">Erase the element pointed to by `position`.</string>
    <string name="">Returns:;; An opaque object implicitly convertible to the `iterator` or `const_iterator` immediately following `position` prior to the erasure. Throws:;; Nothing. Notes:;; The opaque object returned must only be discarded or immediately converted to `iterator` or `const_iterator`.</string>
    <string name=":889">---</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=":904">---</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:;; Nothing in this implementation (neither the `hasher` nor the `key_equal` objects are called).</string>
    <string name=":918">---</string>
    <string name="">swap</string>
    <string name="">```c++ void swap(unordered_flat_set&amp; other) noexcept(boost::allocator_traits&lt;Allocator&gt;::is_always_equal::value || boost::allocator_traits&lt;Allocator&gt;::propagate_on_container_swap::value); ```</string>
    <string name="">Swaps the contents of the container with the parameter.</string>
    <string name=":929">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:;; Nothing unless `key_equal` or `hasher` throw on swapping.</string>
    <string name=":934">---</string>
    <string name="">pull</string>
    <string name="">```c++ init_type pull(const_iterator position); ```</string>
    <string name="">Move-constructs an `init_value` `x` from the element pointed to by `position`, erases the element and returns `x`.</string>
    <string name=":944">---</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`, `max_load() &gt;= max_load_factor() * bucket_count()`</string>
    <string name=":956">---</string>
    <string name="">merge</string>
    <string name="">```c++ template&lt;class H2, class P2&gt; void merge(unordered_flat_set&lt;Key, T, H2, P2, Allocator&gt;&amp; source); template&lt;class H2, class P2&gt; void merge(unordered_flat_set&lt;Key, T, H2, P2, Allocator&gt;&amp;&amp; source); ```</string>
    <string name="">Move-inserts all the elements from `source` whose key is not already present in `*this`, and erases them from `source`.</string>
    <string name=":968">---</string>
    <string name="">Observers</string>
    <string name="">get_allocator</string>
    <string name="">``` allocator_type get_allocator() const noexcept; ```</string>
    <string name="">Returns:;; The container\'s allocator.</string>
    <string name=":980">---</string>
    <string name="">hash_function</string>
    <string name="">``` hasher hash_function() const; ```</string>
    <string name="">Returns:;; The container\'s hash function.</string>
    <string name=":990">---</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=":1000">---</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);"</string>
    <string name="">```</string>
    <string name="">Returns:;; An iterator pointing to an element with key equivalent to `k`, or `end()` if no such element exists. 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=":1017">---</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=":1030">---</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=":1043">---</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=":1059">---</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 size of the bucket array.</string>
    <string name=":1071">---</string>
    <string name="">Hash Policy</string>
    <string name="">load_factor</string>
    <string name="">```c++ float load_factor() const noexcept; ```</string>
    <string name="">Returns:;; `static_cast&lt;float&gt;(size())/static_cast&lt;float&gt;(bucket_count())`, or `0` if `bucket_count() == 0`.</string>
    <string name=":1083">---</string>
    <string name="">max_load_factor</string>
    <string name="">```c++ float max_load_factor() const noexcept; ```</string>
    <string name="">Returns:;; Returns the container\'s maximum load factor.</string>
    <string name=":1094">---</string>
    <string name="">Set max_load_factor</string>
    <string name="">```c++ void max_load_factor(float z); ```</string>
    <string name="">Effects:;; Does nothing, as the user is not allowed to change this parameter. Kept for compatibility with `boost::unordered_set`.</string>
    <string name=":1104">---</string>
    <string name="">max_load</string>
    <string name="">```c++ size_type max_load() const noexcept; ```</string>
    <string name="">Returns:;; The maximum number of elements the container can hold without rehashing, assuming that no further elements will be erased. Note:;; After construction, rehash or clearance, the container\'s maximum load is at least `max_load_factor() * bucket_count()`. This number may decrease on erasure under high-load conditions.</string>
    <string name=":1118">---</string>
    <string name="">rehash</string>
    <string name="">```c++ void rehash(size_type n); ```</string>
    <string name="">Changes if necessary the size of the bucket array 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. If the provided Allocator uses fancy pointers, a default allocation is subsequently performed.</string>
    <string name=":1129">Invalidates iterators, pointers and references, and changes the order of elements.</string>
    <string name=":1132">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=":1134">---</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()))`.</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=":1145">Invalidates iterators, pointers and references, and changes the order of elements.</string>
    <string name=":1148">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=":1150">---</string>
    <string name="">Statistics</string>
    <string name="">get_stats</string>
    <string name="">```c++ stats get_stats() const; ```</string>
    <string name="">Returns:;; A statistical description of the insertion and lookup operations performed by the container so far. Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_flat_set_boost_unordered_enable_stats[enabled].</string>
    <string name=":1163">---</string>
    <string name="">reset_stats</string>
    <string name="">```c++ void reset_stats() noexcept; ```</string>
    <string name="">Effects:;; Sets to zero the internal statistics kept by the container. Notes:;; Only available if xref:reference/stats.adoc#stats[statistics calculation] is xref:unordered_flat_set_boost_unordered_enable_stats[enabled].</string>
    <string name=":1174">---</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="">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_flat_set&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, const unordered_flat_set&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y); ```</string>
    <string name="">Return `true` if `x.size() == y.size()` and for every element in `x`, there is an element in `y` with the same key, with an equal value (using `operator==` to compare the value types).</string>
    <string name=":1208">Notes:;; Behavior is undefined if the two containers don\'t have equivalent equality predicates.</string>
    <string name=":1210">---</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_flat_set&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, const unordered_flat_set&lt;Key, T, Hash, Pred, Alloc&gt;&amp; y); ```</string>
    <string name="">Return `false` if `x.size() == y.size()` and for every element in `x`, there is an element in `y` with the same key, with an equal value (using `operator==` to compare the value types).</string>
    <string name=":1222">Notes:;; Behavior is undefined if the two containers don\'t have equivalent equality predicates.</string>
    <string name="">Swap</string>
    <string name="">```c++ template&lt;class Key, class T, class Hash, class Pred, class Alloc&gt; void swap(unordered_flat_set&lt;Key, T, Hash, Pred, Alloc&gt;&amp; x, unordered_flat_set&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=":1234">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:;; Nothing unless `key_equal` or `hasher` throw on swapping.</string>
    <string name=":1240">---</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_flat_set&lt;K, T, H, P, A&gt;::size_type erase_if(unordered_flat_set&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(); ```</string>
    <string name="">Serialization</string>
    <string name="">``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.</string>
    <string name="">Saving an unordered_flat_set to an archive</string>
    <string name="">Saves all the elements of an `unordered_flat_set` `x` to an archive (XML archive) `ar`.</string>
    <string name="">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).</string>
    <string name=":1284">---</string>
    <string name="">Loading an unordered_flat_set from an archive</string>
    <string name="">Deletes all preexisting elements of an `unordered_flat_set` `x` and inserts from an archive (XML archive) `ar` restored copies of the elements of the original `unordered_flat_set` `other` saved to the storage read by `ar`.</string>
    <string name="">Requires:;; `x.key_equal()` is functionally equivalent to `other.key_equal()`.</string>
    <string name=":1295">---</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_flat_set` `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=":1307">---</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_flat_set` `it` points to, no modifying operations have been issued on `x` between loading of `x` and loading of `it`.</string>
</resources>
