<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">类模板 unordered_node_map</string>
    <string name="">:idprefix: unordered_node_map_</string>
    <string name="">`boost::unordered_node_map` — 一个基于节点的、开放寻址的无序关联容器，将唯一键与对应值相关联。</string>
    <string name="">`boost::unordered_node_map` 使用与 `boost::unordered_flat_map` 类似的开放寻址布局，但由于其基于节点的特性，它提供了指针稳定性和节点处理功能。其性能介于 `boost::unordered_map` 和 `boost::unordered_flat_map` 之间。</string>
    <string name="">由于使用开放寻址，`boost::unordered_node_map` 的接口在多个方面与 `boost::unordered_map`/`std::unordered_map` 有所不同：</string>
    <string name="">- `begin()` 不是常数时间复杂度操作。 - 未提供用于桶管理的 API（除 `bucket_count` 外）。 - 容器的最大负载因子由内部管理，用户无法进行设置。</string>
    <string name="">除此之外，`boost::unordered_node_map` 基本上可以作为标准无序关联容器的即时代替品。</string>
    <string name="">概要</string>
    <string name=":286">---</string>
    <string name="">描述</string>
    <string name="">*模板参数*</string>
    <string name="">_键_</string>
    <string name="">从任何可转换为 `std::pair` 的对象构造并插入容器，并且还必须可以从容器中 https://en.cppreference.com/w/cpp/named_req/Erasable[可擦除^]。</string>
    <string name="">_T_</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="">分配器</string>
    <string name="">一个分配器，其值类型与容器的值类型相同。</string>
    <string name="">支持使用 https://en.cppreference.com/w/cpp/named_req/Allocator#Fancy_pointers[异形指针] 的分配器。</string>
    <string name="">容器的元素节点被保存在内部的 _桶数组_ 中。节点根据其元素的哈希码被插入到对应的桶中，但如果该桶已被占用（发生 _冲突_），则会使用原始位置附近的一个可用桶。</string>
    <string name="">桶数组的大小可以通过调用 `insert`/`emplace` 自动增加，或者作为调用 `rehash`/`reserve` 的结果。容器的 _负载因子_（元素数量除以桶数量）永远不会大于 `max_load_factor()`，但在容器规模较小时，实现可能会允许更高的负载。</string>
    <string name="">如果 `link:../../../../../container_hash/doc/html/hash.html#ref_hash_is_avalanching[hash_is_avalanching]<hash>::value` 为 `true`，则哈希函数将按原样使用；否则，会增加一个位混合后处理阶段，以牺牲额外的计算成本为代价来提高哈希质量。</hash></string>
    <string name=":327">---</string>
    <string name="">配置宏</string>
    <string name="">`BOOST_UNORDERED_ENABLE_STATS`</string>
    <string name="">全局定义此宏可为容器启用 xref:reference/stats.adoc#stats[统计计算]。请注意，此选项会降低许多操作的整体性能。</string>
    <string name=":336">---</string>
    <string name="">类型定义</string>
    <string name="">一种迭代器，其值类型为 `value_type` 。</string>
    <string name=":347">迭代器类别至少为前向迭代器。</string>
    <string name="">可转换为 `const_iterator`。</string>
    <string name=":351">---</string>
    <string name="">一个常量迭代器，其值类型为 `value_type` 。</string>
    <string name=":360">迭代器类别至少为前向迭代器。</string>
    <string name=":362">---</string>
    <string name="">一个用于存放被提取容器元素的类，符合 https://en.cppreference.com/w/cpp/container/node_handle[NodeHandle] 模型。</string>
    <string name=":372">---</string>
    <string name="">内部类模板的特化：</string>
    <string name="">其中 `Iterator` = `iterator`，`NodeType` = `node_type`。</string>
    <string name=":394">---</string>
    <string name="">构造函数</string>
    <string name="">默认构造函数</string>
    <string name="">```c++ unordered_node_map(); ```</string>
    <string name="">使用 `hasher()` 作为哈希函数，`key_equal()` 作为键相等谓词，`allocator_type()` 作为分配器，构造一个空容器。</string>
    <string name=":407">后置条件：`size() == 0`  \n要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":410">---</string>
    <string name="">桶数构造函数</string>
    <string name="">```c++ explicit unordered_node_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` 作为分配器。</string>
    <string name=":424">后置条件：`size() == 0`  \n要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":427">---</string>
    <string name="">迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，`eql` 作为键相等谓词，`a` 作为分配器，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":443">要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":445">---</string>
    <string name="">复制构造函数</string>
    <string name="">```c++ unordered_node_map(unordered_node_map const&amp; other); ```</string>
    <string name="">拷贝构造函数。拷贝所包含的元素、哈希函数、谓词和分配器。</string>
    <string name="">如果 `Allocator::select_on_container_copy_construction` 存在且具有正确的签名，则分配器将根据其结果进行构造。</string>
    <string name=":456">---</string>
    <string name="">移动构造函数</string>
    <string name="">```c++ unordered_node_map(unordered_node_map&amp;&amp; other); ```</string>
    <string name="">移动构造函数。`other` 的内部桶数组会被直接转移给新容器。哈希函数、谓词和分配器通过移动构造从 `other` 获得。如果启用了统计信息（详见 xref:unordered_node_map_boost_unordered_enable_stats[`BOOST_UNORDERED_ENABLE_STATS`]），则会从 `other` 转移内部的统计信息，并调用 `other.reset_stats()`。</string>
    <string name=":468">---</string>
    <string name="">带分配器的迭代器范围构造函数</string>
    <string name="">```c++ template<class inputiterator=""> unordered_node_map(InputIterator f, InputIterator l, const allocator_type&amp; a); ```</class></string>
    <string name="">使用 `a` 作为分配器，以默认哈希函数和键相等谓词构造一个空容器，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":479">要求：`hasher`、`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":481">---</string>
    <string name="">分配器构造函数</string>
    <string name="">```c++ explicit unordered_node_map(Allocator const&amp; a); ```</string>
    <string name="">使用分配器 `a` 构造一个空容器。</string>
    <string name=":490">---</string>
    <string name="">带分配器的拷贝构造函数</string>
    <string name="">```c++ unordered_node_map(unordered_node_map const&amp; other, Allocator const&amp; a); ```</string>
    <string name="">构造一个容器，拷贝 `other` 所包含的元素、哈希函数和谓词，但使用分配器 `a`。</string>
    <string name=":499">---</string>
    <string name="">带分配器的移动构造函数</string>
    <string name="">```c++ unordered_node_map(unordered_node_map&amp;&amp; other, Allocator const&amp; a); ```</string>
    <string name="">如果 `a == other.get_allocator()`，则 `other` 的元素节点会直接转移给新容器；否则，元素将从 `other` 中的元素通过移动构造获得。哈希函数和谓词通过移动构造从 `other` 获得，而分配器则通过拷贝构造从 `a` 获得。如果启用了统计信息（详见 xref:unordered_node_map_boost_unordered_enable_stats[`BOOST_UNORDERED_ENABLE_STATS`]），则当 `a == other.get_allocator()` 时，会从 `other` 转移内部的统计信息，并且始终会调用 `other.reset_stats()`。</string>
    <string name=":513">---</string>
    <string name="">从 `concurrent_node_map` 的移动构造函数</string>
    <string name="">```c++ unordered_node_map(concurrent_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" allocator=\"\"&gt;&amp;amp;&amp;amp; other); ```&lt;/key,&gt;</string>
    <string name="">从 xref:#concurrent_node_map[`concurrent_node_map`] 进行移动构造。`other` 的内部桶数组直接转移给新容器。哈希函数、谓词和分配器通过移动构造从 `other` 获得。如果启用了统计信息（详见 xref:unordered_node_map_boost_unordered_enable_stats[`BOOST_UNORDERED_ENABLE_STATS`]），则从 `other` 转移内部的统计信息，并调用 `other.reset_stats()`。</string>
    <string name="">复杂度：常数时间。  \n并发性：在 `other` 上阻塞。</string>
    <string name=":531">---</string>
    <string name="">初始化列表构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，`eql` 作为键相等谓词和 `a`，并将 `il` 中的元素插入其中。</string>
    <string name=":546">要求：如果使用默认值，则 `hasher`、`key_equal` 和 `allocator_type` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":548">---</string>
    <string name="">带分配器的桶数构造函数</string>
    <string name="">```c++ unordered_node_map(size_type n, allocator_type const&amp; a); ```</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，使用默认的哈希函数和键相等谓词，并以 `a` 作为分配器。</string>
    <string name="">后置条件：`size() == 0`  \n要求：`hasher` 和 `key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":561">---</string>
    <string name="">带哈希函数和分配器的桶数构造函数</string>
    <string name="">```c++ unordered_node_map(size_type n, hasher const&amp; hf, allocator_type const&amp; a); ```</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，使用默认的键相等谓词，并以 `a` 作为分配器。</string>
    <string name="">后置条件：`size() == 0` 要求：`key_equal` 需满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^] 要求。</string>
    <string name=":574">---</string>
    <string name="">带桶数和分配器的迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `a` 作为分配器以及默认的哈希函数和键相等谓词，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":586">要求：`hasher`、`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":588">---</string>
    <string name="">带桶数和哈希函数的迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数，`a` 作为分配器，使用默认的键相等谓词，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":601">要求;; `key_equal` 需满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造] 要求。</string>
    <string name=":603">---</string>
    <string name="">带分配器的初始化列表构造函数</string>
    <string name="">```c++ unordered_node_map(std::initializer_list<value_type> il, const allocator_type&amp; a); ```</value_type></string>
    <string name="">使用 `a` 以及默认的哈希函数和键相等谓词构造一个空容器，并将 `il` 中的元素插入其中。</string>
    <string name=":614">要求：`hasher` 和 `key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":616">---</string>
    <string name="">带桶数和分配器的初始化列表构造函数</string>
    <string name="">```c++ unordered_node_map(std::initializer_list<value_type> il, size_type n, const allocator_type&amp; a); ```</value_type></string>
    <string name="">使用 `a` 以及默认的哈希函数和键相等谓词，构造一个至少包含 `n` 个桶的空容器，并将 `il` 中的元素插入其中。</string>
    <string name=":627">要求：`hasher` 和 `key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":629">---</string>
    <string name="">带桶数、哈希函数和分配器的初始化列表构造函数</string>
    <string name="">```c++ unordered_node_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` 作为分配器，使用默认的键相等谓词，并将 `il` 中的元素插入其中。</string>
    <string name=":641">要求：`key_equal` 需要满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^]。</string>
    <string name=":643">---</string>
    <string name="">析构函数</string>
    <string name="">```c++ ~unordered_node_map(); ```</string>
    <string name="">注意：析构函数会应用于每个元素，并且所有内存都会被释放。</string>
    <string name=":654">---</string>
    <string name="">赋值操作</string>
    <string name="">拷贝赋值</string>
    <string name="">```c++ unordered_node_map&amp; operator=(unordered_node_map const&amp; other); ```</string>
    <string name="">赋值运算符。销毁之前存在的元素，从 `other` 拷贝赋值哈希函数和谓词，如果 `Alloc::propagate_on_container_copy_assignment` 存在且 `Alloc::propagate_on_container_copy_assignment::value` 为 `true`，则从 `other` 拷贝赋值分配器，最后插入 `other` 中元素的副本。</string>
    <string name=":669">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。</string>
    <string name=":671">---</string>
    <string name="">移动赋值</string>
    <string name="">```c++\nunordered_node_map&amp;amp; operator=(unordered_node_map&amp;amp;&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;&amp;amp; std::is_same&lt;pointer, value_type*=\"\"&gt;::value);\n```\n移动赋值运算符。销毁之前存在的元素，交换来自 `other` 的哈希函数和谓词，并且如果 `Alloc::propagate_on_container_move_assignment` 存在且 `Alloc::propagate_on_container_move_assignment::value` 为 `true`，则从 `other` 移动赋值分配器。如果此时分配器与 `other.get_allocator()` 相等，则 `other` 的内部桶数组直接转移给当前容器；否则，插入从 `other` 元素移动构造而来的副本。如果启用了统计信息（详见 xref:unordered_node_map_boost_unordered_enable_stats[`BOOST_UNORDERED_ENABLE_STATS`]），则当最终分配器与 `other.get_allocator()` 相等时，从 `other` 转移内部的统计信息，并且始终会调用 `other.reset_stats()`。&lt;/pointer,&gt;&lt;/allocator&gt;&lt;/allocator&gt;</string>
    <string name=":688">---</string>
    <string name="">初始化列表赋值</string>
    <string name="">```c++ unordered_node_map&amp; operator=(std::initializer_list<value_type> il); ```</value_type></string>
    <string name="">从初始化列表中的值进行赋值。所有之前存在的元素都会被销毁。</string>
    <string name=":698">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。</string>
    <string name="">迭代器</string>
    <string name="">begin</string>
    <string name="">```c++ iterator begin() noexcept; const_iterator begin() const noexcept; ```</string>
    <string name="">返回：指向容器第一个元素的迭代器，如果容器为空则返回容器的尾后迭代器。  \n复杂度：O(`bucket_count()`)</string>
    <string name=":712">---</string>
    <string name="">end</string>
    <string name="">```c++ iterator end() noexcept; const_iterator end() const noexcept; ```</string>
    <string name="">返回：指向容器尾后值的迭代器。</string>
    <string name=":723">---</string>
    <string name="">cbegin</string>
    <string name="">```c++ const_iterator cbegin() const noexcept; ```</string>
    <string name="">返回：指向容器第一个元素的 `const_iterator`，如果容器为空则返回容器的尾后值。  \n复杂度：O(`bucket_count()`)</string>
    <string name=":734">---</string>
    <string name="">cend</string>
    <string name="">```c++ const_iterator cend() const noexcept; ```</string>
    <string name="">返回：指向容器尾后值的 `const_iterator`。</string>
    <string name=":744">---</string>
    <string name="">大小与容量</string>
    <string name="">空</string>
    <string name="">```c++ [[nodiscard]] bool empty() const noexcept; ```</string>
    <string name="">Returns:;; `size() == 0`</string>
    <string name=":757">---</string>
    <string name="">大小</string>
    <string name="">```c++ size_type size() const noexcept; ```</string>
    <string name="">Returns:;; `std::distance(begin(), end())`</string>
    <string name=":768">---</string>
    <string name="">max_size</string>
    <string name="">```c++ size_type max_size() const noexcept; ```</string>
    <string name="">返回：可能的最大容器的 `size()`。</string>
    <string name=":779">---</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=":788">当且仅当容器中没有具有等价键的元素时，才插入一个使用参数 `args` 构造的对象。</string>
    <string name=":791">要求：`value_type` 可从 `args` 构造。  \n返回：返回类型的 `bool` 分量为 `true` 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。  \n\n如果 `args...` 的形式为 `k,v`，则该函数会延迟构造整个对象，直到确定应该插入元素为止，仅使用 `k` 参数进行检查。当 `key_type` 可移动构造或 `k` 参数本身就是 `key_type` 类型时，此优化生效。</string>
    <string name=":800">---</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=":807">当且仅当容器中没有具有等价键的元素时，才插入一个使用参数 `args` 构造的对象。</string>
    <string name="">`position` 是关于元素插入位置的建议。此实现会忽略该建议。</string>
    <string name=":812">要求：`value_type` 可从 `args` 构造。  \n返回：返回类型的 `bool` 分量为 `true` 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。  \n\n如果 `args...` 的形式为 `k,v`，则该函数会延迟构造整个对象，直到确定应该插入元素为止，仅使用 `k` 参数进行检查。当 `key_type` 可移动构造或 `k` 参数本身就是 `key_type` 类型时，此优化生效。</string>
    <string name=":821">---</string>
    <string name="">复制插入</string>
    <string name="">```c++ std::pair&lt;iterator, bool=\"\"&gt; insert(const value_type&amp;amp; obj); std::pair&lt;iterator, bool=\"\"&gt; insert(const init_type&amp;amp; obj); ```&lt;/iterator,&gt;&lt;/iterator,&gt;</string>
    <string name=":829">当且仅当容器中没有具有等价键的元素时，才将 `obj` 插入容器。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。  \n返回：返回类型的 `bool` 分量为 `true` 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。  \n\n形式为 `insert(x)` 的调用，如果 `x` 可以同等转换为 `const value_type&amp;` 和 `const init_type&amp;`，则不会产生歧义，并且会选择 `init_type` 重载。</string>
    <string name=":841">---</string>
    <string name="">移动插入</string>
    <string name="">```c++ std::pair&lt;iterator, bool=\"\"&gt; insert(value_type&amp;amp;&amp;amp; obj); std::pair&lt;iterator, bool=\"\"&gt; insert(init_type&amp;amp;&amp;amp; obj); ```&lt;/iterator,&gt;&lt;/iterator,&gt;</string>
    <string name=":849">当且仅当容器中没有具有等价键的元素时，才将 `obj` 插入容器。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/MoveInsertable[可移动插入^]。  \n返回：返回类型的 `bool` 分量为 `true` 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。  \n\n形式为 `insert(x)` 的调用，如果 `x` 可以同等转换为 `value_type&amp;&amp;` 和 `init_type&amp;&amp;`，则不会产生歧义，并且会选择 `init_type` 重载。</string>
    <string name=":861">---</string>
    <string name="">带提示的复制插入</string>
    <string name="">```c++\niterator insert(const_iterator hint, const value_type&amp; obj);\niterator insert(const_iterator hint, const init_type&amp; obj);\n```\n当且仅当容器中没有具有等价键的元素时，才将 `obj` 插入容器。</string>
    <string name=":870">`hint` 是关于元素插入位置的建议。此实现会忽略该建议。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。  \n返回：返回类型的 `bool` 分量为 `true` 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。  \n\n形式为 `insert(hint, x)` 的调用，如果 `x` 可以同等转换为 `const value_type&amp;` 和 `const init_type&amp;`，则不会产生歧义，并且会选择 `init_type` 重载。</string>
    <string name=":882">---</string>
    <string name="">带提示的移动插入</string>
    <string name="">```c++ iterator insert(const_iterator hint, value_type&amp;&amp; obj); iterator insert(const_iterator hint, init_type&amp;&amp; obj); ```</string>
    <string name=":890">当且仅当容器中没有具有等价键的元素时，才将 `obj` 插入容器。</string>
    <string name=":892">`hint` 是关于元素插入位置的建议。此实现会忽略该建议。</string>
    <string name="">要求：`value_type` 满足 https://en.cppreference.com/w/cpp/named_req/MoveInsertable[可移动插入^]。  \n返回：返回类型的 `bool` 分量为 `true` 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。  \n\n形式为 `insert(hint, x)` 的调用，如果 `x` 可以同等转换为 `value_type&amp;&amp;` 和 `init_type&amp;&amp;`，则不会产生歧义，并且会选择 `init_type` 重载。</string>
    <string name=":904">---</string>
    <string name="">迭代器范围插入</string>
    <string name="">```c++ template<class inputiterator=""> void insert(InputIterator first, InputIterator last); ```</class></string>
    <string name=":911">将一个范围内的元素插入容器中。当且仅当容器中没有具有等价键的元素时，才会插入这些元素。</string>
    <string name="">要求：`value_type` 可以从 `*first` 出发在容器中进行 https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[可原位构造^]。  \n抛出：当插入单个元素时，如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。</string>
    <string name=":918">---</string>
    <string name="">初始化列表插入</string>
    <string name="">```c++ void insert(std::initializer_list<value_type>); ```</value_type></string>
    <string name=":925">将一个范围内的元素插入容器中。当且仅当容器中没有具有等价键的元素时，才会插入这些元素。</string>
    <string name="">要求：`value_type` 可以在容器中进行 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可拷贝插入^]。  \n抛出：当插入单个元素时，如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。</string>
    <string name=":932">---</string>
    <string name="">节点插入</string>
    <string name="">```c++ insert_return_type insert(node_type&amp;&amp; nh); ```</string>
    <string name="">如果 `nh` 非空，则当且仅当容器中没有键与 `nh.key()` 等价的元素时，才将关联的元素插入容器。函数返回时 `nh` 变为空。</string>
    <string name="">返回：一个 `insert_return_type` 对象，由 `position`、`inserted` 和 `node` 构造而成。</string>
    <string name="">若 `nh` 为空，则 `inserted` 为 `false` ， `position` 为 `end()` ，且 `node` 为空。</string>
    <string name="">否则，若插入操作发生，则 `inserted` 为 `true` ， `position` 指向被插入的元素，且 `node` 为空。</string>
    <string name="">若插入操作失败，则 `inserted` 为 `false` ， `node` 保留 `nh` 的原始值，且 `position` 指向与 `nh.key()` 等效的元素。</string>
    <string name="">若 `nh` 非空，则当且仅当容器中不存在键等价于 `nh.key()` 的元素时，插入其关联元素。函数返回时 `nh` 为空。</string>
    <string name=":950">---</string>
    <string name="">带提示的节点插入</string>
    <string name="">```c++ iterator insert(const_iterator hint, node_type&amp;&amp; nh); ```</string>
    <string name="">如果 `nh` 非空，则当且仅当容器中没有键与 `nh.key()` 等价的元素时，才将关联的元素插入容器。如果插入发生，则 `nh` 变为空；否则 `nh` 不变。</string>
    <string name=":960">`hint` 是关于元素插入位置的建议。此实现会忽略该建议。</string>
    <string name="">返回：如果 `nh` 为空，则返回的迭代器为 `end()`。如果插入发生，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：如果 `nh` 非空且 `nh` 与容器的分配器不相等，则行为未定义。</string>
    <string name=":968">---</string>
    <string name="">try_emplace</string>
    <string name="">```c++\ntemplate&lt;class... args=\"\"&gt;\nstd::pair&lt;iterator, bool=\"\"&gt; try_emplace(const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args);\ntemplate&lt;class... args=\"\"&gt;\nstd::pair&lt;iterator, bool=\"\"&gt; try_emplace(key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args);\ntemplate&lt;class k,=\"\" class...=\"\" args=\"\"&gt;\nstd::pair&lt;iterator, bool=\"\"&gt; try_emplace(K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args);\n```&lt;/iterator,&gt;&lt;/class&gt;&lt;/iterator,&gt;&lt;/class...&gt;&lt;/iterator,&gt;&lt;/class...&gt;</string>
    <string name=":980">如果容器中不存在键为 `k` 的元素，则插入一个新元素。</string>
    <string name=":982">如果已存在键为 `k` 的元素，则该函数不执行任何操作。</string>
    <string name="">返回：返回类型的 `bool` 分量为 `true` 表示发生了插入。  \n如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：此函数类似于 xref:#unordered_node_map_emplace[emplace]，区别在于如果存在具有等价键的元素，则不构造 `value_type`；否则，构造形式为：  \n\n```c++</string>
    <string name=":995">```c++\nvalue_type(std::piecewise_construct,\n \u0020 \u0020 \u0020 \u0020 \u0020std::forward_as_tuple(std::forward<key>(k)),\n \u0020 \u0020 \u0020 \u0020 \u0020std::forward_as_tuple(std::forward<args>(args)...))\n```</args></key></string>
    <string name=":1000">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_node_map_emplace[emplace] 不同，后者只是将所有参数直接转发给 `value_type` 的构造函数。</string>
    <string name=":1007">可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。</string>
    <string name=":1009">`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=":1011">--</string>
    <string name=":1013">---</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=":1025">如果容器中不存在键为 `k` 的元素，则插入一个新元素。</string>
    <string name=":1027">如果已存在键为 `k` 的元素，则该函数不执行任何操作。</string>
    <string name="">`hint` 是关于元素插入位置的建议。此实现会忽略该建议。</string>
    <string name="">返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \n注意：此函数类似于 xref:#unordered_node_map_emplace_hint[emplace_hint]，区别在于如果存在具有等价键的元素，则不构造 `value_type`；否则，构造形式为：  \n\n```c++</string>
    <string name=":1040">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=":1045">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_node_map_emplace_hint[emplace_hint] 不同，后者只是将所有参数直接转发给 `value_type` 的构造函数。</string>
    <string name=":1052">可能使迭代器失效，但仅当插入导致负载大于最大负载时才会发生。</string>
    <string name=":1054">`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=":1056">--</string>
    <string name=":1058">---</string>
    <string name="">insert_or_assign</string>
    <string name="">```c++\ntemplate&lt;class m=\"\"&gt;\nstd::pair&lt;iterator, bool=\"\"&gt; insert_or_assign(const key_type&amp;amp; k, M&amp;amp;&amp;amp; obj);\ntemplate&lt;class m=\"\"&gt;\nstd::pair&lt;iterator, bool=\"\"&gt; insert_or_assign(key_type&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj);\ntemplate&lt;class k,=\"\" class=\"\" m=\"\"&gt;\nstd::pair&lt;iterator, bool=\"\"&gt; insert_or_assign(K&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj);\n```&lt;/iterator,&gt;&lt;/class&gt;&lt;/iterator,&gt;&lt;/class&gt;&lt;/iterator,&gt;&lt;/class&gt;</string>
    <string name=":1070">向容器中插入一个新元素，或通过赋值更新现有元素的值。</string>
    <string name=":1072">如果存在键为 `k` 的元素，则通过赋值 `std::forward<m>(obj)` 来更新它。</m></string>
    <string name=":1074">如果不存在这样的元素，则将其添加到容器中，形式为：  \n```c++</string>
    <string name=":1077">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=":1082">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`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=":1096">---</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=":1108">向容器中插入一个新元素，或通过赋值更新现有元素的值。</string>
    <string name=":1110">如果存在键为 `k` 的元素，则通过赋值 `std::forward<m>(obj)` 来更新它。</m></string>
    <string name=":1112">如果不存在这样的元素，则将其添加到容器中，形式为：  \n```c++</string>
    <string name=":1115">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=":1120">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=":1125">`hint` 是关于元素插入位置的建议。此实现会忽略该建议。</string>
    <string name="">返回：如果发生了插入，则迭代器指向新插入的元素；否则，指向具有等价键的元素。  \n抛出：如果除调用 `hasher` 之外的操作抛出异常，则该函数无效果。  \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=":1134">---</string>
    <string name="">按位置擦除</string>
    <string name="">擦除由 `position` 指向的元素。</string>
    <string name="">返回：一个不透明对象，可隐式转换为 `position` 在被擦除之前紧后位置的 `iterator` 或 `const_iterator`。  \n抛出：不抛出任何异常。  \n注意：返回的不透明对象只能被丢弃或立即转换为 `iterator` 或 `const_iterator`。</string>
    <string name=":1153">---</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=":1168">---</string>
    <string name="">范围擦除</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="">返回：被擦除元素之后的迭代器——即 `last`。  \n抛出：在此实现中不抛出任何异常（既不调用 `hasher` 也不调用 `key_equal` 对象）。</string>
    <string name=":1182">---</string>
    <string name="">交换</string>
    <string name="">```c++ void swap(unordered_node_map&amp; other) noexcept(boost::allocator_traits<allocator>::is_always_equal::value || boost::allocator_traits<allocator>::propagate_on_container_swap::value); ```</allocator></allocator></string>
    <string name="">交换容器的内容与参数的内容。</string>
    <string name=":1193">如果 `Allocator::propagate_on_container_swap` 被声明且 `Allocator::propagate_on_container_swap::value` 为 `true`，则交换容器的分配器。否则，使用不相等的分配器进行交换将导致未定义行为。</string>
    <string name="">抛出：除非 `key_equal` 或 `hasher` 在交换时抛出异常，否则不抛出任何异常。</string>
    <string name=":1198">---</string>
    <string name="">通过位置提取</string>
    <string name="">```c++ node_type extract(const_iterator position); ```</string>
    <string name="">提取 `position` 所指向的元素。</string>
    <string name="">返回：一个持有被提取元素的 `node_type` 对象。  \n抛出：不抛出任何异常。</string>
    <string name=":1211">---</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` 对象；如果未提取到任何元素，则返回空。  \n抛出：仅当 `hasher` 或 `key_equal` 抛出异常时才会抛出。  \n注意：`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1226">---</string>
    <string name="">pull</string>
    <string name="">```c++ init_type pull(const_iterator position); ```</string>
    <string name="">从 `position` 指向的元素移动构造一个 `init_value` 对象 `x`，擦除该元素并返回 `x`。</string>
    <string name=":1236">---</string>
    <string name="">清空</string>
    <string name="">```c++ void clear() noexcept; ```</string>
    <string name="">擦除容器中的所有元素。</string>
    <string name="">后置条件：`size() == 0`，`max_load() &gt;= max_load_factor() * bucket_count()`</string>
    <string name=":1248">---</string>
    <string name="">合并</string>
    <string name="">```c++ template&lt;class h2,=\"\" class=\"\" p2=\"\"&gt; void merge(unordered_node_map&lt;key, t,=\"\" h2,=\"\" p2,=\"\" allocator=\"\"&gt;&amp;amp; source); template&lt;class h2,=\"\" class=\"\" p2=\"\"&gt; void merge(unordered_node_map&lt;key, t,=\"\" h2,=\"\" p2,=\"\" allocator=\"\"&gt;&amp;amp;&amp;amp; source); ```&lt;/key,&gt;&lt;/class&gt;&lt;/key,&gt;&lt;/class&gt;</string>
    <string name="">从 `source` 转移所有键在 `*this` 中尚未存在的元素节点。</string>
    <string name="">要求：`this-&gt;get_allocator() == source.get_allocator()`。  \n注意：会使被转移元素的迭代器失效。如果 `*this` 的结果大小大于其原始最大负载，则会使与 `*this` 关联的所有迭代器失效。</string>
    <string name=":1266">---</string>
    <string name="">观察器</string>
    <string name="">get_allocator</string>
    <string name="">``` allocator_type get_allocator() const noexcept; ```</string>
    <string name="">返回：容器的分配器。</string>
    <string name=":1278">---</string>
    <string name="">哈希函数</string>
    <string name="">``` hasher hash_function() const; ```</string>
    <string name="">返回：容器的哈希函数。</string>
    <string name=":1288">---</string>
    <string name="">key_eq</string>
    <string name="">``` key_equal key_eq() const; ```</string>
    <string name="">返回：容器的键相等谓词。</string>
    <string name=":1298">---</string>
    <string name="">查找</string>
    <string name="">find</string>
    <string name="">```c++ iterator \u0020 \u0020 \u0020 \u0020 find(const key_type&amp; k); const_iterator \u0020 find(const key_type&amp; k) const; template<class k=""> iterator \u0020 \u0020 \u0020 find(const K&amp; k);</class></string>
    <string name="">```</string>
    <string name="">返回：指向键与 `k` 等价的元素的迭代器；如果不存在这样的元素，则返回 `end()`。  \n注意：`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1315">---</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注意：`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1328">---</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注意：`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1341">---</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注意：`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1357">---</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`template&lt;class k=\"\"&gt;` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。&lt;/class&gt;&lt;/key_type&gt;</string>
    <string name=":1374">---</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注意：`template<class k="">` 重载仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员 typedef 时参与重载决议。库假定 `Hash` 可同时使用 `K` 和 `Key` 调用，且 `Pred` 是透明的。这支持了异构查找，从而避免了实例化 `Key` 类型对象的开销。</class></string>
    <string name=":1389">---</string>
    <string name="">桶接口</string>
    <string name="">bucket_count</string>
    <string name="">```c++ size_type bucket_count() const noexcept; ```</string>
    <string name="">返回：桶数组的大小。</string>
    <string name=":1401">---</string>
    <string name="">哈希策略</string>
    <string name="">负载因子</string>
    <string name="">```c++ float load_factor() const noexcept; ```</string>
    <string name="">返回：`static_cast<float>(size())/static_cast<float>(bucket_count())`，如果 `bucket_count() == 0` 则返回 `0`。</float></float></string>
    <string name=":1413">---</string>
    <string name="">max_load_factor</string>
    <string name="">```c++ float max_load_factor() const noexcept; ```</string>
    <string name="">返回：容器的最大负载因子。</string>
    <string name=":1424">---</string>
    <string name="">设置最大负载因子</string>
    <string name="">```c++ void max_load_factor(float z); ```</string>
    <string name="">效果：不执行任何操作，因为用户不允许更改此参数。保留此函数是为了与 `boost::unordered_map` 保持兼容。</string>
    <string name=":1434">---</string>
    <string name="">max_load</string>
    <string name="">```c++ size_type max_load() const noexcept; ```</string>
    <string name="">返回：容器在不触发重哈希的情况下能够容纳的最大元素数量（假设不再有元素被擦除）。  \n注意：在构造、重哈希或清空操作之后，容器的最大负载至少为 `max_load_factor() * bucket_count()`。在高负载条件下，该数值可能会因元素擦除而减小。</string>
    <string name=":1448">---</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=":1459">使迭代器失效并改变元素的顺序。</string>
    <string name=":1462">抛出：如果抛出异常（除非是由容器的哈希函数或比较函数抛出的），则该函数无效果。</string>
    <string name=":1464">---</string>
    <string name="">保留</string>
    <string name="">```c++ void reserve(size_type n); ```</string>
    <string name="">等价于 `a.rehash(ceil(n / a.max_load_factor()))`。</string>
    <string name="">与 `rehash` 类似，此函数可用于增大或缩小容器中的桶数量。</string>
    <string name=":1475">使迭代器失效并改变元素的顺序。</string>
    <string name=":1478">抛出：如果抛出异常（除非是由容器的哈希函数或比较函数抛出的），则该函数无效果。</string>
    <string name=":1480">---</string>
    <string name="">统计信息</string>
    <string name="">get_stats</string>
    <string name="">```c++ stats get_stats() const; ```</string>
    <string name="">返回：容器迄今为止所执行插入和查找操作的统计描述。  \n注意：仅在 xref:reference/stats.adoc#stats[统计计算] 通过 xref:unordered_node_map_boost_unordered_enable_stats[`BOOST_UNORDERED_ENABLE_STATS`] 启用时才可用。</string>
    <string name=":1493">---</string>
    <string name="">reset_stats</string>
    <string name="">```c++ void reset_stats() noexcept; ```</string>
    <string name="">效果：将容器内部维护的统计信息归零。  \n注意：仅在 xref:reference/stats.adoc#stats[统计计算] 通过 xref:unordered_node_map_boost_unordered_enable_stats[`BOOST_UNORDERED_ENABLE_STATS`] 启用时才可用。</string>
    <string name=":1504">---</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_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, const unordered_node_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=":1563">注意：如果两个容器不具有等价的相等谓词，则行为未定义。</string>
    <string name=":1565">---</string>
    <string name="">operator!</string>
    <string name="">```c++ template&lt;class key,=\"\" class=\"\" t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt; bool operator!=(const unordered_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, const unordered_node_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=":1577">注意：如果两个容器不具有等价的相等谓词，则行为未定义。</string>
    <string name="">交换</string>
    <string name="">```c++ template&lt;class key,=\"\" class=\"\" t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt; void swap(unordered_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, unordered_node_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=":1589">如果 `Allocator::propagate_on_container_swap` 被声明且 `Allocator::propagate_on_container_swap::value` 为 `true`，则交换容器的分配器。否则，使用不相等的分配器进行交换将导致未定义行为。</string>
    <string name="">效果：`x.swap(y)`  \n抛出：除非 `key_equal` 或 `hasher` 在交换时抛出异常，否则不抛出任何异常。</string>
    <string name=":1595">---</string>
    <string name="">erase_if</string>
    <string name="">```c++ template&lt;class k,=\"\" class=\"\" t,=\"\" h,=\"\" p,=\"\" a,=\"\" predicate=\"\"&gt; typename unordered_node_map&lt;k, t,=\"\" h,=\"\" p,=\"\" a=\"\"&gt;::size_type erase_if(unordered_node_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="">"返回：被擦除的元素数量。  \n注意：等价于：  \n```c++\nauto original_size = c.size();\nfor (auto i = c.begin(), last = c.end(); i != last; ) {\n    if (pred(*i)) {\n        i = c.erase(i);\n    } else {\n        ++i;\n    }\n}\nreturn original_size - c.size();\n```  \n注意，传递给 `pred` 的引用是非常量的。"</string>
    <string name="">序列化</string>
    <string name="">`unordered_node_map` 可以通过本库提供的 API，借助 link:../../../../../serialization/index.html[Boost.Serialization^] 进行归档/恢复。支持常规归档和 XML 归档。</string>
    <string name="">将 unordered_node_map 保存到归档中</string>
    <string name="">将 `unordered_node_map` `x` 的所有元素保存到归档（XML 归档） `ar` 。</string>
    <string name="">要求：`std::remove_const<key_type>::type` 和 `std::remove_const<mapped_type>::type` 必须是可序列化的（对于 XML 归档需支持 XML 序列化），并且它们必须支持 Boost.Serialization 的 `save_construct_data`/`load_construct_data` 协议（该协议由满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造^] 的类型自动支持）。</mapped_type></key_type></string>
    <string name=":1641">---</string>
    <string name="">从归档中加载 unordered_node_map</string>
    <string name="">删除 `unordered_node_map` 容器 `x` 中所有已存在的元素，并从归档（XML 归档）`ar` 中插入从原始 `unordered_node_map` 容器 `other` 保存到 `ar` 所读取存储中的元素恢复出的副本。</string>
    <string name="">要求：`key_type` 和 `mapped_type` 必须分别能够从 `std::remove_const<key_type>::type&amp;&amp;` 和 `std::remove_const<mapped_type>::type&amp;&amp;` 构造。`x.key_equal()` 在功能上必须等价于 `other.key_equal()`。</mapped_type></key_type></string>
    <string name=":1655">---</string>
    <string name="">将迭代器/常量迭代器保存到归档</string>
    <string name="">将迭代器（或常量迭代器）`it` 的位置信息保存到归档（XML 归档）`ar` 中。`it` 可以是一个 `end()` 迭代器。</string>
    <string name="">要求：`it` 所指向的 `unordered_node_map` 容器 `x` 必须先被保存到 `ar` 中，并且在保存 `x` 和保存 `it` 之间，不能对 `x` 执行任何修改操作。</string>
    <string name=":1667">---</string>
    <string name="">从归档加载迭代器/常量迭代器</string>
    <string name="">使迭代器（或常量迭代器）`it` 指向原始迭代器（或常量迭代器）被保存到归档（XML 归档）`ar` 所读取存储中的位置恢复后的位置。</string>
    <string name="">要求：如果 `x` 是 `it` 所指向的 `unordered_node_map` 容器，则在加载 `x` 和加载 `it` 之间，不能对 `x` 执行任何修改操作。</string>
</resources>
