<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">类模板 unordered_map</string>
    <string name="">:idprefix: unordered_map_</string>
    <string name="">`boost::unordered_map` — 一个无序关联容器，用于将唯一的键与另一个值关联起来。</string>
    <string name="">概要</string>
    <string name=":280">---</string>
    <string name="">描述</string>
    <string name="">*模板参数*</string>
    <string name="">_键_</string>
    <string name="">`Key` 必须可以从容器中 https://en.cppreference.com/w/cpp/named_req/Erasable[Erasable^]（即 `allocator_traits` 能够销毁它）。</string>
    <string name="">_T_</string>
    <string name="">`T` 必须可以从容器中 https://en.cppreference.com/w/cpp/named_req/Erasable[Erasable^]（即 `allocator_traits` 可以销毁它）。</string>
    <string name="">_Hash_</string>
    <string name="">一种一元函数对象类型，用作 `Key` 的哈希函数。它接受一个 `Key` 类型的参数，并返回一个 `std::size_t` 类型的值。</string>
    <string name="">_Pred_</string>
    <string name="">一种二元函数对象，用于实现 `Key` 类型值上的等价关系。它接受两个 `Key` 类型的参数，并返回一个 `bool` 类型的值。</string>
    <string name="">_Allocator_</string>
    <string name="">一种分配器，其值类型与容器的值类型相同。</string>
    <string name="">支持使https://en.cppreference.com/w/cpp/named_req/Allocator#Fancy_pointers[异形指针] 的分配器。</string>
    <string name="">元素被组织到桶中。具有相同哈希码的键存储在同一桶中。</string>
    <string name="">桶的数量可以通过调用 insert 自动增加，或者作为调用 rehash 的结果。</string>
    <string name="">配置宏</string>
    <string name="">`BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0`</string>
    <string name="">全局定义此宏以支持加载由 Boost 1.84 之前版本的 Boost 保存到 Boost.Serialization 归档中的 `unordered_map`。</string>
    <string name="">类型定义</string>
    <string name="">一个迭代器，其值类型为 `value_type`。</string>
    <string name=":327">迭代器类别至少为前向迭代器。</string>
    <string name="">可转换为 `const_iterator` 。</string>
    <string name=":331">---</string>
    <string name="">一个常量迭代器，其值类型为 `value_type` 。</string>
    <string name=":340">迭代器类别至少为前向迭代器。</string>
    <string name=":342">---</string>
    <string name="">一种迭代器，其值类型、差值类型以及指针和引用类型均与 iterator 相同。</string>
    <string name="">`local_iterator` 对象可用于遍历单个桶内的元素。</string>
    <string name=":353">---</string>
    <string name="">一种常量迭代器，其值类型、差值类型以及指针和引用类型均与 const_iterator 相同。</string>
    <string name="">`const_local_iterator` 对象可用于遍历单个桶。</string>
    <string name=":364">---</string>
    <string name="">一个用于存放被提取容器元素的类，符合 https://en.cppreference.com/w/cpp/container/node_handle[NodeHandle] 模型。</string>
    <string name=":374">---</string>
    <string name="">一个内部类模板的特化：</string>
    <string name="">其中 `Iterator` = `iterator`，`NodeType` = `node_type`。</string>
    <string name=":396">---</string>
    <string name="">构造函数</string>
    <string name="">默认构造函数</string>
    <string name="">```c++ unordered_map(); ```</string>
    <string name="">使用 `hasher()` 作为哈希函数，`key_equal()` 作为键相等谓词，`allocator_type()` 作为分配器，以及最大负载因子 `1.0` 构造一个空容器。</string>
    <string name=":410">后置条件：`size() == 0`  \n要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":413">---</string>
    <string name="">桶数构造函数</string>
    <string name="">```c++ explicit unordered_map(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="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，`eql` 作为键相等谓词，`a` 作为分配器，以及最大负载因子 `1.0`。</string>
    <string name=":428">后置条件：`size() == 0`  \n要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":431">---</string>
    <string name="">迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，`eql` 作为键相等谓词，`a` 作为分配器，以及最大负载因子 `1.0`，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":447">要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":449">---</string>
    <string name="">复制构造函数</string>
    <string name="">```c++ unordered_map(unordered_map const&amp; other); ```</string>
    <string name="">拷贝构造函数。拷贝所包含的元素、哈希函数、谓词、最大负载因子和分配器。</string>
    <string name="">如果 `Allocator::select_on_container_copy_construction` 存在且具有正确的签名，则分配器将根据其结果进行构造。</string>
    <string name=":461">要求：`value_type` 可拷贝构造。</string>
    <string name=":463">---</string>
    <string name="">移动构造函数</string>
    <string name="">```c++ unordered_map(unordered_map&amp;&amp; other); ```</string>
    <string name="">移动构造函数。</string>
    <string name="">注意：此函数使用 Boost.Move 实现。  \n要求：`value_type` 可移动构造。</string>
    <string name=":476">---</string>
    <string name="">带分配器的迭代器区间构造函数</string>
    <string name="">```c++ template<class inputiterator=""> unordered_map(InputIterator f, InputIterator l, const allocator_type&amp; a); ```</class></string>
    <string name="">使用 `a` 作为分配器，以默认哈希函数、默认键相等谓词和最大负载因子 `1.0` 构造一个空容器，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":487">要求：`hasher`、`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":489">---</string>
    <string name="">分配器构造函数</string>
    <string name="">```c++ explicit unordered_map(Allocator const&amp; a); ```</string>
    <string name="">使用分配器 `a` 构造一个空容器。</string>
    <string name=":498">---</string>
    <string name="">带分配器的复制构造函数</string>
    <string name="">```c++ unordered_map(unordered_map const&amp; other, Allocator const&amp; a); ```</string>
    <string name="">构造一个容器，拷贝 `other` 所包含的元素、哈希函数、谓词和最大负载因子，但使用分配器 `a`。</string>
    <string name=":507">---</string>
    <string name="">带分配器的移动构造函数</string>
    <string name="">```c++ unordered_map(unordered_map&amp;&amp; other, Allocator const&amp; a); ```</string>
    <string name="">构造一个容器，移动 other 所包含的元素，并使用其哈希函数、谓词和最大负载因子，但使用分配器 a。</string>
    <string name="">"注意：此函数使用 Boost.Move 实现。  要求：`value_type` 可移动插入。"</string>
    <string name=":520">---</string>
    <string name="">初始化列表构造函数</string>
    <string name="">构造一个至少包含 n 个桶的空容器，使用 hf 作为哈希函数，eql 作为键相等谓词，a 作为分配器，以及最大负载因子 1.0，并将 il 中的元素插入其中。</string>
    <string name=":535">要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":537">---</string>
    <string name="">带分配器的桶数构造函数</string>
    <string name="">```c++ unordered_map(size_type n, allocator_type const&amp; a); ```</string>
    <string name="">构造一个至少包含 n 个桶的空容器，使用 hf 作为哈希函数，使用默认的哈希函数和键相等谓词，a 作为分配器，以及最大负载因子 1.0。</string>
    <string name="">后置条件：`size() == 0`  \n要求：`hasher` 和 `key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":550">---</string>
    <string name="">带哈希函数和分配器的桶数构造函数</string>
    <string name="">```c++ unordered_map(size_type n, hasher const&amp; hf, allocator_type const&amp; a); ```</string>
    <string name="">构造一个至少包含 n 个桶的空容器，使用 hf 作为哈希函数，使用默认的键相等谓词，a 作为分配器，以及最大负载因子 1.0。</string>
    <string name="">"后置条件：`size() == 0`  要求：`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。"</string>
    <string name=":563">---</string>
    <string name="">带桶数和分配器的迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `a` 作为分配器，使用默认的哈希函数、默认的键相等谓词以及最大负载因子 `1.0`，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":575">要求：`hasher`、`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":577">---</string>
    <string name="">带桶数和哈希函数的迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，`a` 作为分配器，使用默认的键相等谓词，以及最大负载因子 `1.0`，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":590">要求：`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":592">---</string>
    <string name="">带分配器的初始化列表构造函数</string>
    <string name="">```c++ unordered_map(std::initializer_list<value_type> il, const allocator_type&amp; a); ```</value_type></string>
    <string name="">使用 a 作为分配器，最大负载因子为 1.0，构造一个空容器，并将 il 中的元素插入其中。</string>
    <string name=":603">要求：`hasher` 和 `key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":605">---</string>
    <string name="">带桶数和分配器的初始化列表构造函数</string>
    <string name="">```c++ unordered_map(std::initializer_list<value_type> il, size_type n, const allocator_type&amp; a); ```</value_type></string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `a` 作为分配器，最大负载因子为 `1.0`，并将 `il` 中的元素插入其中。</string>
    <string name=":616">要求：`hasher` 和 `key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":618">---</string>
    <string name="">带桶数、哈希函数和分配器的初始化列表构造函数</string>
    <string name="">```c++ unordered_map(std::initializer_list<value_type> il, size_type n, const hasher&amp; hf, const allocator_type&amp; a); ```</value_type></string>
    <string name="">构造一个至少包含 n 个桶的空容器，使用 hf 作为哈希函数，a 作为分配器，最大负载因子为 1.0，并将 il 中的元素插入其中。</string>
    <string name=":630">要求：`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":632">---</string>
    <string name="">析构函数</string>
    <string name="">```c++ ~unordered_map(); ```</string>
    <string name="">注意：析构函数会应用于每个元素，并且所有内存都会被释放。</string>
    <string name=":643">---</string>
    <string name="">赋值操作</string>
    <string name="">复制赋值</string>
    <string name="">```c++ unordered_map&amp; operator=(unordered_map const&amp; other); ```</string>
    <string name="">赋值运算符。拷贝所包含的元素、哈希函数、谓词和最大负载因子，但不拷贝分配器。</string>
    <string name="">如果 `Alloc::propagate_on_container_copy_assignment` 存在且 `Alloc::propagate_on_container_copy_assignment::value` 为 `true`，则分配器会被覆盖；否则，拷贝的元素将使用现有的分配器创建。</string>
    <string name=":658">要求：`value_type` 可拷贝构造。</string>
    <string name=":660">---</string>
    <string name="">移动赋值</string>
    <string name="">```c++ unordered_map&amp; operator=(unordered_map&amp;&amp; other) noexcept(boost::allocator_traits<allocator>::is_always_equal::value &amp;&amp; boost::is_nothrow_move_assignable_v<hash> &amp;&amp; boost::is_nothrow_move_assignable_v<pred>); ``` The move assignment operator.</pred></hash></allocator></string>
    <string name="">如果 `Alloc::propagate_on_container_move_assignment` 存在且 `Alloc::propagate_on_container_move_assignment::value` 为 `true`，则分配器会被覆盖；否则，移动的元素将使用现有的分配器创建。</string>
    <string name="">要求：`value_type` 可移动构造。</string>
    <string name=":676">---</string>
    <string name="">初始化列表赋值</string>
    <string name="">```c++ unordered_map&amp; operator=(std::initializer_list<value_type> il); ```</value_type></string>
    <string name="">从初始化列表中的值进行赋值。所有现有元素要么被新元素覆盖，要么被销毁。</string>
    <string name="">要求：`value_type` 必须能够从容器中 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^] 并且满足 https://en.cppreference.com/w/cpp/named_req/CopyAssignable[可拷贝赋值^]。</string>
    <string name="">迭代器</string>
    <string name=":690">begin</string>
    <string name="">```c++ iterator begin() noexcept; const_iterator begin() const noexcept; ```</string>
    <string name="">返回：指向容器第一个元素的迭代器，如果容器为空则返回容器的尾后迭代器。</string>
    <string name=":699">---</string>
    <string name=":701">end</string>
    <string name="">```c++ iterator end() noexcept; const_iterator end() const noexcept; ```</string>
    <string name="">返回：指向容器尾后值的迭代器。</string>
    <string name=":710">---</string>
    <string name=":712">cbegin</string>
    <string name="">```c++ const_iterator cbegin() const noexcept; ```</string>
    <string name="">返回：指向容器第一个元素的 `const_iterator`，如果容器为空则返回容器的尾后值。</string>
    <string name=":720">---</string>
    <string name=":722">cend</string>
    <string name="">```c++ const_iterator cend() const noexcept; ```</string>
    <string name="">返回：指向容器尾后值的 `const_iterator`。</string>
    <string name=":730">---</string>
    <string name="">大小与容量</string>
    <string name="">空</string>
    <string name="">```c++ [[nodiscard]] bool empty() const noexcept; ```</string>
    <string name="">返回：`size() == 0`。</string>
    <string name=":743">---</string>
    <string name="">大小</string>
    <string name="">```c++ size_type size() const noexcept; ```</string>
    <string name="">返回：`std::distance(begin(), end())`。</string>
    <string name=":754">---</string>
    <string name="">max_size</string>
    <string name="">```c++ size_type max_size() const noexcept; ```</string>
    <string name="">返回：可能的最大容器的 `size()`。</string>
    <string name=":765">---</string>
    <string name="">修改器</string>
    <string name="">原地构造</string>
    <string name="">```c++ template&lt;class... args=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; emplace(Args&amp;amp;&amp;amp;... args); ```&lt;/iterator,&gt;&lt;/class...&gt;</string>
    <string name=":774">当且仅当容器中没有具有等价键的元素时，才插入一个使用参数 `args` 构造的对象。</string>
    <string name="">"要求：`value_type` 必须可以从 `args` 出发在 `X` 中进行 https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[可原位构造^]。  返回：如果发生了插入，则返回类型的 bool 分量为 true。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  指向元素的指针和引用永远不会失效。  \n如果 `args...` 的形式为 `k,v`，则该函数会延迟构造整个对象，直到确定应该插入元素为止，仅使用 `k` 参数进行检查。当映射的 `key_type` 可移动构造或 `k` 参数本身就是 `key_type` 类型时，此优化生效。"</string>
    <string name=":788">---</string>
    <string name="">emplace_hint</string>
    <string name="">```c++ template<class... args=""> iterator emplace_hint(const_iterator position, Args&amp;&amp;... args); ```</class...></string>
    <string name=":795">当且仅当容器中没有具有等价键的元素时，才插入一个使用参数 `args` 构造的对象。</string>
    <string name="">`position` 是关于元素插入位置的建议。</string>
    <string name="">"要求：`value_type` 必须可以从 `args` 出发在 `X` 中进行 https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[可原位构造^]。  返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：标准关于 `hint` 的含义表述相当模糊。但唯一实际的使用方式，也是 Boost.Unordered 支持的唯一方式，是将其指向一个具有相同键的已存在元素。  \n可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。  \n如果 `args...` 的形式为 `k,v`，则该函数会延迟构造整个对象，直到确定应该插入元素为止，仅使用 `k` 参数进行检查。当映射的 `key_type` 可移动构造或 `k` 参数本身就是 `key_type` 类型时，此优化生效。"</string>
    <string name=":811">---</string>
    <string name="">复制插入</string>
    <string name="">```c++ std::pair&lt;iterator, bool=\"\"&gt; insert(const value_type&amp;amp; obj); ```&lt;/iterator,&gt;</string>
    <string name=":818">当且仅当容器中没有具有等价键的元素时，才将 `obj` 插入容器。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。  \n返回：返回类型的 bool 分量为 true 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。</string>
    <string name=":830">---</string>
    <string name="">移动插入</string>
    <string name="">```c++ std::pair&lt;iterator, bool=\"\"&gt; insert(value_type&amp;amp;&amp;amp; obj); ```&lt;/iterator,&gt;</string>
    <string name=":837">当且仅当容器中没有具有等价键的元素时，才将 obj 插入容器。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/MoveInsertable[可移动插入^]。  \n返回：返回类型的 bool 分量为 true 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。</string>
    <string name=":849">---</string>
    <string name="">原地插入</string>
    <string name="">```c++ template&lt;class p=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; insert(P&amp;amp;&amp;amp; obj); ```&lt;/iterator,&gt;&lt;/class&gt;</string>
    <string name="">通过执行 `emplace(std::forward<p>(value))` 向容器中插入一个元素。</p></string>
    <string name=":858">仅当 std::is_constructible&lt;value_type, p&amp;&amp;=\"\"&gt;::value 为 true 时参与重载决议。&lt;/value_type,&gt;</string>
    <string name="">返回：返回类型的 bool 分量为 true 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。</string>
    <string name=":865">---</string>
    <string name="">带提示的复制插入</string>
    <string name="">```c++iterator insert(const_iterator hint, const value_type&amp; obj);```\n当且仅当容器中没有具有等价键的元素时，才将 `obj` 插入容器。</string>
    <string name=":873">`hint` 是关于元素插入位置的建议。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。  \n返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：标准关于 `hint` 的含义表述相当模糊。但唯一实际的使用方式，也是 Boost.Unordered 支持的唯一方式，是将其指向一个具有相同键的已存在元素。  \n可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。</string>
    <string name=":885">---</string>
    <string name="">带提示的移动插入</string>
    <string name="">```c++ iterator insert(const_iterator hint, value_type&amp;&amp; obj); ```</string>
    <string name=":892">当且仅当容器中没有具有等价键的元素时，才将 `obj` 插入容器。</string>
    <string name=":894">`hint` 是关于元素插入位置的建议。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/MoveInsertable[可移动插入^]。  \n返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：标准关于 `hint` 的含义表述相当模糊。但唯一实际的使用方式，也是 Boost.Unordered 支持的唯一方式，是将其指向一个具有相同键的已存在元素。  \n可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。</string>
    <string name=":906">---</string>
    <string name="">带提示的原地插入</string>
    <string name="">```c++ template<class p=""> iterator insert(const_iterator hint, P&amp;&amp; obj); ```</class></string>
    <string name="">通过执行 `emplace_hint(hint, std::forward<p>(value))` 向容器中插入一个元素。</p></string>
    <string name=":916">仅当 `std::is_constructible&lt;value_type, p&amp;&amp;=\"\"&gt;::value` 为 `true` 时参与重载决议。&lt;/value_type,&gt;</string>
    <string name=":918">`hint` 是关于元素插入位置的建议。</string>
    <string name="">返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n注意：标准关于 `hint` 的含义表述相当模糊。但唯一实际的使用方式，也是 Boost.Unordered 支持的唯一方式，是将其指向一个具有相同键的已存在元素。  \n可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。</string>
    <string name=":928">---</string>
    <string name="">迭代器范围插入</string>
    <string name="">```c++ template<class inputiterator=""> void insert(InputIterator first, InputIterator last); ```</class></string>
    <string name=":935">将一个范围内的元素插入容器中。当且仅当容器中没有具有等价键的元素时，才会插入这些元素。</string>
    <string name="">要求：`value_type` 必须可以从 `*first` 出发在 `X` 中进行 https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[可原位构造^]。  \n抛出：当插入单个元素时，如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。</string>
    <string name=":944">---</string>
    <string name="">初始化列表插入</string>
    <string name="">```c++ void insert(std::initializer_list<value_type>); ```</value_type></string>
    <string name=":951">将一个范围内的元素插入容器中。当且仅当容器中没有具有等价键的元素时，才会插入这些元素。</string>
    <string name="">要求：`value_type` 可以在容器中进行 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。  \n抛出：当插入单个元素时，如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。</string>
    <string name=":960">---</string>
    <string name="">try_emplace</string>
    <string name="">```c++ template&lt;class... args=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; try_emplace(const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args); template&lt;class... args=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; try_emplace(key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args); template&lt;class k,=\"\" class...=\"\" args=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; try_emplace(K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args) ```&lt;/iterator,&gt;&lt;/class&gt;&lt;/iterator,&gt;&lt;/class...&gt;&lt;/iterator,&gt;&lt;/class...&gt;</string>
    <string name=":972">如果容器中不存在键为 `k` 的元素，则插入一个新元素。</string>
    <string name=":974">如果已存在键为 `k` 的元素，则该函数不执行任何操作。</string>
    <string name="">"返回：返回类型的 bool 分量为 true 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：此函数类似于 xref:#unordered_map_emplace[emplace]，区别在于 `value_type` 的构造方式如下：  ```c++"</string>
    <string name=":986">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<key>(k)), std::forward_as_tuple(std::forward<args>(args)...))</args></key></string>
    <string name=":991">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<k>(k)), std::forward_as_tuple(std::forward<args>(args)...)) ```</args></k></string>
    <string name="">而不是像 xref:#unordered_map_emplace[emplace] 那样简单地将所有参数转发给 `value_type` 的构造函数。</string>
    <string name=":998">可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。</string>
    <string name=":1000">指向元素的指针和引用永远不会失效。</string>
    <string name=":1002">`template&lt;class k,=\"\" args=\"\"&gt;` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef，且 `iterator` 和 `const_iterator` 都不能从 `K` 隐式转换时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。&lt;/class&gt;</string>
    <string name=":1005">---</string>
    <string name="">带提示位置的 `try_emplace`</string>
    <string name="">```c++ template&lt;class... args=\"\"&gt; iterator try_emplace(const_iterator hint, const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args); template&lt;class... args=\"\"&gt; iterator try_emplace(const_iterator hint, key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args); template&lt;class k,=\"\" class...=\"\" args=\"\"&gt; iterator try_emplace(const_iterator hint, K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args); ```&lt;/class&gt;&lt;/class...&gt;&lt;/class...&gt;</string>
    <string name=":1017">如果容器中不存在键为 `k` 的元素，则插入一个新元素。</string>
    <string name=":1019">如果已存在键为 `k` 的元素，则该函数不执行任何操作。</string>
    <string name=":1021">`hint` 是关于元素插入位置的建议。</string>
    <string name="">"返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：此函数类似于 xref:#unordered_map_emplace_hint[emplace_hint]，区别在于 `value_type` 的构造方式如下：  \n```c++"</string>
    <string name=":1031">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<key>(k)), std::forward_as_tuple(std::forward<args>(args)...))</args></key></string>
    <string name=":1036">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<k>(k)), std::forward_as_tuple(std::forward<args>(args)...)) ```</args></k></string>
    <string name="">而不是像 xref:#unordered_map_emplace_hint[emplace_hint] 那样简单地将所有参数转发给 `value_type` 的构造函数。</string>
    <string name="">标准关于 `hint` 的含义表述相当模糊。但唯一实际的使用方式，也是 Boost.Unordered 支持的唯一方式，是将其指向一个具有相同键的已存在元素。</string>
    <string name=":1045">可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。</string>
    <string name=":1047">指向元素的指针和引用永远不会失效。</string>
    <string name=":1049">`template&lt;class k,=\"\" args=\"\"&gt;` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef，且 `iterator` 和 `const_iterator` 都不能从 `K` 隐式转换时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。&lt;/class&gt;</string>
    <string name=":1052">---</string>
    <string name="">insert_or_assign</string>
    <string name="">```c++ template&lt;class m=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; insert_or_assign(const key_type&amp;amp; k, M&amp;amp;&amp;amp; obj); template&lt;class m=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; insert_or_assign(key_type&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj); template&lt;class k,=\"\" class=\"\" m=\"\"&gt; std::pair&lt;iterator, bool=\"\"&gt; insert_or_assign(K&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj); ```&lt;/iterator,&gt;&lt;/class&gt;&lt;/iterator,&gt;&lt;/class&gt;&lt;/iterator,&gt;&lt;/class&gt;</string>
    <string name=":1064">向容器中插入一个新元素，或通过赋值更新现有元素的值。</string>
    <string name=":1066">如果存在键为 `k` 的元素，则通过赋值 `std::forward<m>(obj)` 来更新它。</m></string>
    <string name=":1068">如果不存在这样的元素，则将其添加到容器中，形式为：  \n```c++</string>
    <string name=":1071">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<key>(k)), std::forward_as_tuple(std::forward<m>(obj)))</m></key></string>
    <string name=":1076">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<k>(k)), std::forward_as_tuple(std::forward<m>(obj))) ```</m></k></string>
    <string name="">返回：返回类型的 bool 分量为 true 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。  \n\n`template&lt;class k,=\"\" class=\"\" m=\"\"&gt;` 仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。&lt;/class&gt;</string>
    <string name=":1092">---</string>
    <string name="">带提示位置的 `insert_or_assign`</string>
    <string name="">```c++ template&lt;class m=\"\"&gt; iterator insert_or_assign(const_iterator hint, const key_type&amp;amp; k, M&amp;amp;&amp;amp; obj); template&lt;class m=\"\"&gt; iterator insert_or_assign(const_iterator hint, key_type&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj); template&lt;class k,=\"\" class=\"\" m=\"\"&gt; iterator insert_or_assign(const_iterator hint, K&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj); ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name=":1104">向容器中插入一个新元素，或通过赋值更新现有元素的值。</string>
    <string name=":1106">如果存在键为 `k` 的元素，则通过赋值 `std::forward<m>(obj)` 来更新它。</m></string>
    <string name=":1108">向容器中插入新元素，或通过赋值给已存在的元素值来更新该元素。</string>
    <string name=":1111">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<key>(k)), std::forward_as_tuple(std::forward<m>(obj)))</m></key></string>
    <string name=":1116">value_type(std::piecewise_construct, std::forward_as_tuple(std::forward<k>(k)), std::forward_as_tuple(std::forward<m>(obj))) ```</m></k></string>
    <string name=":1121">`hint` 是关于元素插入位置的建议。</string>
    <string name="">"返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：标准关于 `hint` 的含义表述相当模糊。但唯一实际的使用方式，也是 Boost.Unordered 支持的唯一方式，是将其指向一个具有相同键的已存在元素。  \n可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  指向元素的指针和引用永远不会失效。  \n`template&lt;class k,=\"\" class=\"\" m=\"\"&gt;` 仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。&lt;/class&gt;"</string>
    <string name=":1134">---</string>
    <string name="">通过迭代器提取</string>
    <string name="">```c++ node_type extract(const_iterator position); ```</string>
    <string name="">移除 `position` 所指向的元素。</string>
    <string name="">返回：一个拥有该元素的 `node_type`。  \n注意：通过此方法提取的节点可以插入到兼容的 `unordered_multimap` 中。</string>
    <string name=":1147">---</string>
    <string name="">通过键提取</string>
    <string name="">```c++ node_type extract(const key_type&amp; k); template<class k=""> node_type extract(K&amp;&amp; k); ```</class></string>
    <string name="">移除一个键与 `k` 等价的元素。</string>
    <string name="">返回：如果找到该元素，则返回一个拥有该元素的 `node_type`；否则返回一个空的 `node_type`。  \n抛出：仅当 `hasher` 或 `key_equal` 抛出异常时才会抛出。  \n注意：通过此方法提取的节点可以插入到兼容的 `unordered_multimap` 中。  \n`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef，且 `iterator` 和 `const_iterator` 都不能从 `K` 隐式转换时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1164">---</string>
    <string name="">通过 `node_handle` 插入</string>
    <string name="">```c++ insert_return_type insert(node_type&amp;&amp; nh); ```</string>
    <string name=":1171">如果 `nh` 为空，则无效果。</string>
    <string name=":1173">否则，当且仅当容器中没有具有等价键的元素时，才插入 `nh` 所拥有的元素。</string>
    <string name="">要求：`nh` 为空或 `nh.get_allocator()` 等于容器的分配器。  \n返回：如果 `nh` 为空，则返回一个 `insert_return_type`，其中 `inserted` 为 `false`，`position` 等于 `end()`，`node` 为空。  \n否则如果已存在具有等价键的元素，则返回一个 `insert_return_type`，其中 `inserted` 为 `false`，`position` 指向匹配的元素，`node` 包含 `nh` 中的节点。  \n否则如果插入成功，则返回一个 `insert_return_type`，其中 `inserted` 为 `true`，`position` 指向新插入的元素，`node` 为空。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。  \n此函数可用于插入从兼容的 `unordered_multimap` 中提取的节点。</string>
    <string name=":1189">---</string>
    <string name="">带提示和 `node_handle` 的插入</string>
    <string name="">```c++ iterator insert(const_iterator hint, node_type&amp;&amp; nh); ```</string>
    <string name=":1196">如果 `nh` 为空，则无效果。</string>
    <string name=":1198">否则，当且仅当容器中没有具有等价键的元素时，才插入 `nh` 所拥有的元素。</string>
    <string name="">如果容器中已存在具有等价键的元素，则对 `nh` 无影响（即 `nh` 仍然包含该节点）。</string>
    <string name=":1202">`hint` 是关于元素插入位置的建议。</string>
    <string name="">要求：`nh` 为空或 `nh.get_allocator()` 等于容器的分配器。  \n返回：如果 `nh` 为空，则返回 `end()`。  \n如果容器中已存在具有等价键的元素，则返回指向该元素的迭代器。  \n否则返回指向新插入元素的迭代器。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：标准关于 `hint` 的含义表述相当模糊。但唯一实际的使用方式，也是 Boost.Unordered 支持的唯一方式，是将其指向一个具有相同键的已存在元素。  \n可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。  \n指向元素的指针和引用永远不会失效。  \n此函数可用于插入从兼容的 `unordered_multimap` 中提取的节点。</string>
    <string name=":1220">---</string>
    <string name="">通过位置擦除</string>
    <string name="">```c++ iterator erase(iterator position); iterator erase(const_iterator position); ```</string>
    <string name=":1229">擦除 `position` 所指向的元素。</string>
    <string name="">返回：`position` 在被擦除之前的后一个迭代器。  \n抛出：仅当 `hasher` 或 `key_equal` 抛出异常时才会抛出。  \n注意：在旧版本中，此操作可能效率较低，因为它需要搜索多个桶以找到返回迭代器的位置。数据结构已经更改，不再是这种情况，并且备用的擦除方法已被弃用。</string>
    <string name=":1236">---</string>
    <string name="">通过键擦除</string>
    <string name="">```c++ size_type erase(const key_type&amp; k); template<class k=""> size_type erase(K&amp;&amp; k); ```</class></string>
    <string name="">擦除所有键与 `k` 等价的元素。</string>
    <string name="">返回：被擦除的元素数量。  \n抛出：仅当 `hasher` 或 `key_equal` 抛出异常时才会抛出。  \n注意：`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef，且 `iterator` 和 `const_iterator` 都不能从 `K` 隐式转换时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1251">---</string>
    <string name="">范围擦除</string>
    <string name="">```c++ iterator erase(const_iterator first, const_iterator last); ```</string>
    <string name="">擦除从 `first` 到 `last` 范围内的元素。</string>
    <string name="">返回：被擦除元素之后的迭代器——即 `last`。  \n抛出：仅当 `hasher` 或 `key_equal` 抛出异常时才会抛出。  \n在此实现中，此重载不会调用任何函数对象的方法，因此不会抛出异常，但这在其他实现中可能并不成立。</string>
    <string name=":1267">---</string>
    <string name="">quick_erase</string>
    <string name="">```c++ void quick_erase(const_iterator position); ```</string>
    <string name=":1274">擦除 `position` 所指向的元素。</string>
    <string name=":1277">抛出：;; 仅当由 `hasher` 或 `key_equal` 抛出异常时才会抛出异常。\n\n在此实现中，此重载不会调用任一函数对象的方法，因此不会抛出异常，但在其他实现中可能并非如此。\n\n备注：;; 之所以实现此方法，是因为从 `erase` 返回下一个元素的迭代器开销较大，但容器已经过重新设计，情况不再如此。因此，此方法现已废弃。</string>
    <string name=":1282">---</string>
    <string name="">erase_return_void</string>
    <string name="">```c++ void erase_return_void(const_iterator position); ```</string>
    <string name=":1289">删除 `position` 所指向的元素。</string>
    <string name=":1292">抛出：;; 仅当由 `hasher` 或 `key_equal` 抛出异常时才会抛出异常。\n在此实现中，此重载不会调用任一函数对象的方法，因此不会抛出异常，但在其他实现中可能并非如此。\n备注：;; 之所以实现此方法，是因为从 `erase` 返回下一个元素的迭代器开销较大，但容器已经过重新设计，情况不再如此。因此，此方法现已废弃。</string>
    <string name=":1297">---</string>
    <string name="">交换</string>
    <string name="">```c++ void swap(unordered_map&amp; other) noexcept(boost::allocator_traits<allocator>::is_always_equal::value &amp;&amp; boost::is_nothrow_swappable_v<hash> &amp;&amp; boost::is_nothrow_swappable_v<pred>); ```</pred></hash></allocator></string>
    <string name="">将容器的内容与参数进行交换。</string>
    <string name=":1309">如果 `Allocator::propagate_on_container_swap` 已声明且 `Allocator::propagate_on_container_swap::value` 为 `true`，则交换两个容器的分配器。否则，使用不相等的分配器进行交换将导致未定义行为。</string>
    <string name="">抛出：;; 除非由 `key_equal` 或 `hasher` 的复制构造函数或复制赋值运算符抛出异常，否则不会抛出异常。\n备注：;; 异常规范与 C++11 标准不完全相同，因为相等谓词和哈希函数是通过它们的复制构造函数进行交换的。</string>
    <string name=":1315">---</string>
    <string name="">清空</string>
    <string name="">```c++ void clear(); ```</string>
    <string name="">清除容器中的所有元素。</string>
    <string name="">后置条件：;; `size() == 0`抛出：;; 永不抛出异常。</string>
    <string name=":1328">---</string>
    <string name="">合并</string>
    <string name="">```c++ template&lt;class h2,=\"\" class=\"\" p2=\"\"&gt; void merge(unordered_map&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;amp;&amp;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_multimap&lt;key, t,=\"\" h2,=\"\" p2,=\"\" allocator=\"\"&gt;&amp;amp;&amp;amp; source); ```&lt;/key,&gt;&lt;/class&gt;&lt;/key,&gt;&lt;/class&gt;&lt;/key,&gt;&lt;/class&gt;&lt;/key,&gt;&lt;/class&gt;</string>
    <string name="">尝试通过迭代 `source` 并提取 `source` 中不包含在 `*this` 内的任何节点，然后将其插入到 `*this` 中，从而实现两个容器的“合并”。</string>
    <string name="">由于 `source` 可能具有不同的哈希函数和键相等谓词，因此 `source` 中每个节点的键都将使用 `this-&gt;hash_function()` 重新计算哈希值，然后根据需要再使用 `this-&gt;key_eq()` 进行比较。</string>
    <string name="">如果 `this-&gt;get_allocator() != source.get_allocator()`，则此函数的行为未定义。</string>
    <string name="">此函数不会复制或移动任何元素，而只是将节点从 `source` 重新定位到 `*this` 中。</string>
    <string name="">注意:;; + --</string>
    <string name="">指向被转移元素的指针和引用保持有效。</string>
    <string name="">使指向被转移元素的迭代器失效。</string>
    <string name="">使属于 `*this` 的迭代器失效。</string>
    <string name="">`source` 中未被转移的元素的迭代器保持有效。</string>
    <string name="">--</string>
    <string name=":1363">---</string>
    <string name="">观察器</string>
    <string name="">get_allocator</string>
    <string name="">``` allocator_type get_allocator() const; ```</string>
    <string name=":1372">---</string>
    <string name="">哈希函数</string>
    <string name="">``` hasher hash_function() const; ```</string>
    <string name="">返回：;; 容器的哈希函数。</string>
    <string name=":1382">---</string>
    <string name="">key_eq</string>
    <string name="">``` key_equal key_eq() const; ```</string>
    <string name="">返回：;; 容器的键相等谓词。</string>
    <string name=":1392">---</string>
    <string name="">查找</string>
    <string name="">find</string>
    <string name="">"```c++ iterator         find(const key_type&amp;amp; k); const_iterator   find(const key_type&amp;amp; k) const; template&lt;class k=\"\"&gt; iterator       find(const K&amp;amp; k); template&lt;class k=\"\"&gt; const_iterator find(const K&amp;amp; k) const; template&lt;typename compatiblekey,=\"\" typename=\"\" compatiblehash,=\"\" compatiblepredicate=\"\"&gt; iterator       find(CompatibleKey const&amp;amp; k, CompatibleHash const&amp;amp; hash, CompatiblePredicate const&amp;amp; eq); template&lt;typename compatiblekey,=\"\" typename=\"\" compatiblehash,=\"\" compatiblepredicate=\"\"&gt; const_iterator find(CompatibleKey const&amp;amp; k, CompatibleHash const&amp;amp; hash, CompatiblePredicate const&amp;amp; eq) const;&lt;/typename&gt;&lt;/typename&gt;&lt;/class&gt;&lt;/class&gt;"</string>
    <string name="">```</string>
    <string name="">返回：;; 指向键与 `k` 等价之元素的迭代器；若无此元素，则返回 `b.end()`。\n备注：;; 包含 `CompatibleKey`、`CompatibleHash` 和 `CompatiblePredicate` 的模板重载属于非标准扩展，允许使用兼容的哈希函数和相等谓词来处理不同类型的键，从而避免昂贵的类型转换。通常不建议使用它们，而应使用 `K` 成员函数模板。\n此外，仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时，`template<class k="">` 重载才会参与重载决议。库假定 `Hash` 可同时以 `K` 和 `Key` 类型调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型的开销。</class></string>
    <string name=":1419">---</string>
    <string name="">count</string>
    <string name="">```c++ size_type \u0020 \u0020 \u0020 \u0020count(const key_type&amp; k) const; template<class k=""> size_type \u0020 \u0020 \u0020count(const K&amp; k) const; ```</class></string>
    <string name="">返回：;; 键与 `k` 等价的元素个数。\n备注：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时，`template<class k="">` 重载才会参与重载决议。库假定 `Hash` 可同时以 `K` 和 `Key` 类型调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型的开销。</class></string>
    <string name=":1432">---</string>
    <string name="">包含</string>
    <string name="">```c++ bool \u0020 \u0020 \u0020 \u0020 \u0020 \u0020 contains(const key_type&amp; k) const; template<class k=""> bool \u0020 \u0020 \u0020 \u0020 \u0020 contains(const K&amp; k) const; ```</class></string>
    <string name="">返回：;; 一个布尔值，指示容器中是否存在键等于 `key` 的元素。\n备注：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时，`template<class k="">` 重载才会参与重载决议。库假定 `Hash` 可同时以 `K` 和 `Key` 类型调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型的开销。</class></string>
    <string name=":1445">---</string>
    <string name="">equal_range</string>
    <string name="">"```c++ std::pair&lt;iterator, iterator=\"\"&gt;               equal_range(const key_type&amp;amp; k); std::pair&lt;const_iterator, const_iterator=\"\"&gt;   equal_range(const key_type&amp;amp; k) const; template&lt;class k=\"\"&gt; std::pair&lt;iterator, iterator=\"\"&gt;             equal_range(const K&amp;amp; k); template&lt;class k=\"\"&gt; std::pair&lt;const_iterator, const_iterator=\"\"&gt; equal_range(const K&amp;amp; k) const; ```&lt;/const_iterator,&gt;&lt;/class&gt;&lt;/iterator,&gt;&lt;/class&gt;&lt;/const_iterator,&gt;&lt;/iterator,&gt;"</string>
    <string name="">返回：;; 一个范围，包含所有键与 `k` 等价的元素。若容器中不包含任何此类元素，则返回 `std::make_pair(b.end(), b.end())`。\n备注：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时，`template<class k="">` 重载才会参与重载决议。库假定 `Hash` 可同时以 `K` 和 `Key` 类型调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型的开销。</class></string>
    <string name=":1461">---</string>
    <string name="">operator++[++++]++</string>
    <string name="">```c++ mapped_type&amp; operator[](const key_type&amp; k); mapped_type&amp; operator[](key_type&amp;&amp; k); template<class k=""> mapped_type&amp; operator[](K&amp;&amp; k); ```</class></string>
    <string name="">效果：;; 如果容器中尚不存在键与 `k` 等价的元素，则插入值 `std::pair&lt;key_type const,=\"\" mapped_type=\"\"&gt;(k, mapped_type())`。\n返回：;; 指向 `x.second` 的引用，其中 `x` 是容器中已存在的元素，或者是键与 `k` 等价的新插入元素。\n抛出：;; 如果除调用 `hasher` 之外的操作抛出异常，则该函数无效。\n备注：;; 可能使迭代器失效，但仅当插入导致负载因子大于或等于最大负载因子时才会发生。\n此外，指向元素的指针和引用永远不会失效。\n另外，仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时，`template&lt;class k=\"\"&gt;` 重载才会参与重载决议。库假定 `Hash` 可同时以 `K` 和 `Key` 类型调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型的开销。&lt;/class&gt;&lt;/key_type&gt;</string>
    <string name=":1480">---</string>
    <string name="">at</string>
    <string name="">```c++ mapped_type&amp; at(const key_type&amp; k); const mapped_type&amp; at(const key_type&amp; k) const; template<class k=""> mapped_type&amp; at(const K&amp; k); template<class k=""> const mapped_type&amp; at(const K&amp; k) const; ```</class></class></string>
    <string name="">返回：;; 指向 `x.second` 的引用，其中 `x` 是键与 `k` 等价的（唯一）元素。\n抛出：;; 如果不存在这样的元素，则抛出 `std::out_of_range` 类型的异常对象。\n备注：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时，`template<class k="">` 重载才会参与重载决议。库假定 `Hash` 可同时以 `K` 和 `Key` 类型调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型的开销。</class></string>
    <string name=":1495">---</string>
    <string name="">桶接口</string>
    <string name="">bucket_count</string>
    <string name="">```c++ size_type bucket_count() const noexcept; ```</string>
    <string name="">返回：;; 桶的数量。</string>
    <string name=":1507">---</string>
    <string name="">max_bucket_count</string>
    <string name="">```c++ size_type max_bucket_count() const noexcept; ```</string>
    <string name="">返回：;; 桶数量的上限。</string>
    <string name=":1517">---</string>
    <string name="">桶大小</string>
    <string name="">```c++ size_type bucket_size(size_type n) const; ```</string>
    <string name="">要求：;; `n &lt; bucket_count()`返回：;; 桶 `n` 中的元素个数。</string>
    <string name=":1528">---</string>
    <string name="">桶</string>
    <string name="">```c++ size_type bucket(const key_type&amp; k) const; template<class k=""> size_type bucket(const K&amp; k) const; ```</class></string>
    <string name="">返回：;; 包含键 `k` 的元素的桶索引。\n后置条件：;; 返回值小于 `bucket_count()`。\n备注：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时，`template<class k="">` 重载才会参与重载决议。库假定 `Hash` 可同时以 `K` 和 `Key` 类型调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型的开销。</class></string>
    <string name=":1541">---</string>
    <string name=":1543">begin</string>
    <string name="">```c++ local_iterator begin(size_type n); const_local_iterator begin(size_type n) const; ```</string>
    <string name="">要求：;; `n` 应在 `[0, bucket_count())` 范围内。\n返回：;; 指向索引为 `n` 的桶中第一个元素的局部迭代器。</string>
    <string name=":1554">---</string>
    <string name=":1556">end</string>
    <string name="">```c++ local_iterator end(size_type n); const_local_iterator end(size_type n) const; ```</string>
    <string name="">要求：;; `n` 应在 `[0, bucket_count())` 范围内。\n返回：;; 指向索引为 `n` 的桶中“尾后”元素的局部迭代器。</string>
    <string name=":1566">---</string>
    <string name=":1568">cbegin</string>
    <string name="">```c++ const_local_iterator cbegin(size_type n) const; ```</string>
    <string name="">要求：;; `n` 应在 `[0, bucket_count())` 范围内。\n返回：;; 指向索引为 `n` 的桶中第一个元素的常量局部迭代器。</string>
    <string name=":1577">---</string>
    <string name=":1579">cend</string>
    <string name="">```c++ const_local_iterator cend(size_type n) const; ```</string>
    <string name="">要求：;; `n` 应在 `[0, bucket_count())` 范围内。\n返回：;; 指向索引为 `n` 的桶中“尾后”元素的常量局部迭代器。</string>
    <string name=":1588">---</string>
    <string name="">哈希策略</string>
    <string name="">负载因子</string>
    <string name="">```c++ float load_factor() const noexcept; ```</string>
    <string name="">返回：;; 每个桶的平均元素个数。</string>
    <string name=":1600">---</string>
    <string name="">max_load_factor</string>
    <string name="">```c++ float max_load_factor() const noexcept; ```</string>
    <string name="">返回：;; 返回当前的最大负载因子。</string>
    <string name=":1611">---</string>
    <string name="">设置最大负载因子</string>
    <string name="">```c++ void max_load_factor(float z); ```</string>
    <string name="">效果：;; 改变容器的最大负载因子，以 `z` 作为提示。</string>
    <string name=":1621">---</string>
    <string name="">重哈希</string>
    <string name="">```c++ void rehash(size_type n); ```</string>
    <string name="">改变桶的数量，使得至少包含 `n` 个桶，并且使得负载因子小于或等于最大负载因子。在适用的情况下，这将增大或缩小与容器相关联的 `bucket_count()`。</string>
    <string name="">当 `size() == 0` 时，`rehash(0)` 将释放底层桶数组的内存。</string>
    <string name=":1633">使迭代器失效，并改变元素的顺序。指向元素的指针和引用不会失效。</string>
    <string name=":1636">抛出：;; 如果抛出异常（除非是由容器的哈希函数或比较函数抛出），则该函数无效。</string>
    <string name=":1638">---</string>
    <string name="">保留</string>
    <string name="">```c++ void reserve(size_type n); ```</string>
    <string name="">等价于 `a.rehash(ceil(n / a.max_load_factor()))`；如果 `n &gt; 0` 且 `a.max_load_factor() == std::numeric_limits<float>::infinity()`，则等价于 `a.rehash(1)`。</float></string>
    <string name="">与 `rehash` 类似，此函数可用于增加或减少容器中桶的数量。</string>
    <string name=":1649">使迭代器失效，并改变元素的顺序。指向元素的指针和引用不会失效。</string>
    <string name=":1652">抛出：;; 如果抛出异常（除非是由容器的哈希函数或比较函数抛出），则该函数无效。</string>
    <string name="">推导指引</string>
    <string name="">在以下任一条件成立时，推导指引将不参与重载决议：</string>
    <string name="">- 它具有 `InputIterator` 模板参数，并且为该参数推导出的类型不符合输入迭代器的要求。\n- 它具有 `Allocator` 模板参数，并且为该参数推导出的类型不符合分配器的要求。\n- 它具有 `Hash` 模板参数，并且为该参数推导出的是整数类型或符合分配器要求的类型。\n- 它具有 `Pred` 模板参数，并且为该参数推导出的是符合分配器要求的类型。</string>
    <string name="">推导指引中的 `size_type` 参数类型指向由该推导指引所推导出的容器类型的 `size_type` 成员类型。其默认值与所选构造函数的默认值一致。</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="">相等性比较</string>
    <string name="">operator</string>
    <string name="">```c++ template&lt;class key,=\"\" class=\"\" t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt; bool operator==(const unordered_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, const unordered_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; y); ```&lt;/key,&gt;&lt;/key,&gt;&lt;/class&gt;</string>
    <string name="">如果 `x.size() == y.size()` 并且对于 `x` 中的每个元素，在 `y` 中都有一个具有相同键且值相等的元素（使用 `operator==` 比较值类型），则返回 `true`。</string>
    <string name=":1711">备注：;; 如果两个容器不具有等价的相等谓词，则行为未定义。</string>
    <string name=":1713">---</string>
    <string name="">operator!</string>
    <string name="">```c++ template&lt;class key,=\"\" class=\"\" t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt; bool operator!=(const unordered_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, const unordered_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; y); ```&lt;/key,&gt;&lt;/key,&gt;&lt;/class&gt;</string>
    <string name="">如果 `x.size() == y.size()` 并且对于 `x` 中的每个元素，在 `y` 中都有一个具有相同键且值相等的元素（使用 `operator==` 比较值类型），则返回 `false`。</string>
    <string name=":1725">备注：;; 如果两个容器不具有等价的相等谓词，则行为未定义。</string>
    <string name="">交换</string>
    <string name="">```c++ template&lt;class key,=\"\" class=\"\" t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt; void swap(unordered_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, unordered_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; y) noexcept(noexcept(x.swap(y))); ```&lt;/key,&gt;&lt;/key,&gt;&lt;/class&gt;</string>
    <string name="">交换 `x` 和 `y` 的内容。</string>
    <string name=":1737">如果 `Allocator::propagate_on_container_swap` 已声明且 `Allocator::propagate_on_container_swap::value` 为 `true`，则交换两个容器的分配器。否则，使用不相等的分配器进行交换将导致未定义行为。</string>
    <string name="">效果：;; `x.swap(y)`\n抛出：;; 除非由 `key_equal` 或 `hasher` 的复制构造函数或复制赋值运算符抛出异常，否则不会抛出异常。\n备注：;; 异常规范与 C++11 标准不完全相同，因为相等谓词和哈希函数是通过它们的复制构造函数进行交换的。</string>
    <string name=":1744">---</string>
    <string name="">erase_if</string>
    <string name="">```c++ template&lt;class k,=\"\" class=\"\" t,=\"\" h,=\"\" p,=\"\" a,=\"\" predicate=\"\"&gt; typename unordered_map&lt;k, t,=\"\" h,=\"\" p,=\"\" a=\"\"&gt;::size_type erase_if(unordered_map&lt;k, t,=\"\" h,=\"\" p,=\"\" a=\"\"&gt;&amp;amp; c, Predicate pred); ```&lt;/k,&gt;&lt;/k,&gt;&lt;/class&gt;</string>
    <string name="">遍历容器 `c` 并移除所有使给定谓词返回 `true` 的元素。</string>
    <string name="">"返回：;; 被移除的元素数量。备注：;; 等价于：```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();```注意，传递给 `pred` 的引用是非常量的。"</string>
    <string name="">序列化</string>
    <string name="">`unordered_map` 可以通过本库提供的 API，使用 link:../../../../../serialization/index.html[Boost.Serialization^] 进行归档/恢复。支持常规归档和 XML 归档。</string>
    <string name="">将 unordered_map 保存到归档</string>
    <string name="">将 `unordered_map` `x` 的所有元素保存到归档（XML 归档）`ar` 中。</string>
    <string name="">要求：;; `std::remove_const<key_type>::type` 和 `std::remove_const<mapped_type>::type` 必须是可序列化的（支持 XML 序列化），并且它们支持 Boost.Serialization 的 `save_construct_data`/`load_construct_data` 协议（该协议由 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] 类型的自动支持）。</mapped_type></key_type></string>
    <string name=":1790">---</string>
    <string name="">从归档中加载 unordered_map</string>
    <string name="">删除 `unordered_map` `x` 中所有已存在的元素，并从归档（XML 归档）`ar` 中插入由 `ar` 所读取存储中保存的原始 `unordered_map` `other` 元素的恢复副本。</string>
    <string name="">要求：;; `value_type` 可以从 `(std::remove_const<key_type>::type&amp;&amp;, std::remove_const<mapped_type>::type&amp;&amp;)` 进行 https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^]。`x.key_equal()` 在功能上等价于 `other.key_equal()`。\n注意：;; 如果归档是使用 Boost 1.84 之前的 Boost 版本保存的，则必须全局定义配置宏 `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` 才能使此操作成功；否则将抛出异常。</mapped_type></key_type></string>
    <string name=":1806">---</string>
    <string name="">将迭代器/常量迭代器保存到归档中</string>
    <string name="">将 `iterator`（`const_iterator`）`it` 的位置信息保存到归档（XML 归档）`ar` 中。`it` 可以是 `end()` 迭代器。</string>
    <string name="">要求：;; `it` 所指向的 `unordered_map` `x` 此前已保存至 `ar`，并且在保存 `x` 和保存 `it` 之间未对 `x` 执行任何修改操作。</string>
    <string name=":1818">---</string>
    <string name="">从归档中加载迭代器/常量迭代器</string>
    <string name="">使 `iterator`（`const_iterator`）`it` 指向保存到由归档（XML 归档）`ar` 读取的存储中的原始 `iterator`（`const_iterator`）的被恢复位置。</string>
    <string name="">要求：;; 如果 `x` 是 `it` 所指向的 `unordered_map`，则在加载 `x` 和加载 `it` 之间未对 `x` 执行任何修改操作。</string>
</resources>
