<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">[#concurrent_node_map]</string>
    <string name="">类模板 concurrent++_++node++_++map</string>
    <string name="">:idprefix: concurrent_node_map_</string>
    <string name="">`boost::concurrent++_++node++_++map` —— 一种基于节点的哈希表，用于建立唯一键与对应值的关联，并支持在无外部同步机制的情况下并发执行元素插入、擦除、查找和访问操作。</string>
    <string name="">尽管 `boost::concurrent++_++node++_++map` 的行为类似于容器，但它并不符合标准 C{plus}{plus} 的 https://en.cppreference.com/w/cpp/named_req/Container[容器] 概念模型。具体而言，它不提供迭代器及相关操作（如 `begin` 、 `end` 等）。元素的访问和修改通过用户提供的__访问函数__来实现，这些函数被传递至 `concurrent++_++node++_++map` 的操作中，并在其内部以受控方式执行。这种基于访问的 API 设计能够支持低争用的并发应用场景。</string>
    <string name="">`boost::concurrent++_++node++_++map` 的内部数据结构与 `boost::unordered++_++node++_++map` 类似。与 `boost::concurrent++_++flat++_++map` 不同，它提供了指针稳定性和节点处理功能，但代价是可能带来性能上的损失。</string>
    <string name="">概要</string>
    <string name=":347">---</string>
    <string name="">描述</string>
    <string name="">*模板参数*</string>
    <string name="">_键_</string>
    <string name="">`std::pair` 对象 https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[原地构造] 到容器中，并且必须支持从容器中 https://en.cppreference.com/w/cpp/named_req/Erasable[擦除] 。</string>
    <string name="">_T_</string>
    <string name="">_Hash_</string>
    <string name="">一元函数对象类型，用作 `Key` 的哈希函数。它接受一个类型为 `Key`</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`/`emplace`，或执行 `rehash`/`reserve` 操作，可自动增大桶数组的大小。哈希表的**负载因子**（元素数量除以桶数量）永远不会大于 `max_load_factor()`，仅在尺寸极小时，实现可能允许更高的负载。</string>
    <string name="">若`link:../../../../../container_hash/doc/html/hash.html#ref_hash_is_avalanchinghash[hash_is_avalanching]<hash>::value` 为 `true`，则直接使用原哈希函数；否则会添加一个比特混合后处理阶段，以额外计算开销为代价提升哈希质量。</hash></string>
    <string name=":388">---</string>
    <string name="">并发要求与保证</string>
    <string name="">要求对同一 `Hash` 或 `Pred` 常量实例并发调用 `operator()` 时不得引入数据竞争。对于 `Alloc` （即 `Allocator` 或其重绑定后的任意分配器类型），在同一实例 `al` 上并发调用以下操作时不得引入数据竞争：</string>
    <string name="">从 `al` 复制构造重新绑定的分配器</string>
    <string name="">`std::allocator_traits<alloc>::allocate`</alloc></string>
    <string name="">`std::allocator_traits<alloc>::deallocate`</alloc></string>
    <string name="">`std::allocator_traits<alloc>::construct`</alloc></string>
    <string name="">`std::allocator_traits<alloc>::destroy`</alloc></string>
    <string name="">通常而言，若 `Hash` 、 `Pred` 和 `Allocator` 这些类型不包含状态，或其操作仅涉及对内部数据成员的常量访问，即可满足上述要求。</string>
    <string name="">除析构操作外，对同一个 `concurrent++_++node++_++map` 实例并发调用任何操作都不会引入数据竞争——即这些操作是线程安全的。</string>
    <string name="">如果某个操作 *op* 被显式指定为__阻塞于__ `x` （其中 `x` 是 `boost::concurrent++_++node++_++map` 的实例），则先前对 `x` 的阻塞操作将与 *op* 同步。因此，在多线程场景中，对同一 `concurrent++_++node++_++map` 的阻塞操作将按顺序执行。</string>
    <string name="">若某个操作仅在触发内部重哈希时才会阻塞于 _`x`_，则称该操作__阻塞于 _`x`_ 的重哈希过程__。</string>
    <string name="">当由 `boost::concurrent++_++node++_++map` 在内部执行时，用户提供的访问函数对传递的元素执行以下操作不会引入数据竞争：</string>
    <string name="">对元素的读取访问。</string>
    <string name="">对元素的非可变修改。</string>
    <string name="">对元素的可变修改：</string>
    <string name="">** 在容器接受两个访问函数的操作中，此条件始终适用于第一个访问函数。 ** 在名称不包含 `cvisit` 的非常量容器函数中，此条件适用于最后一个（或唯一一个）访问函数。</string>
    <string name="">任何插入或修改元素 `e` 的 `boost::concurrent++_++node++_++map 操作 ` 都会与对 `e` 执行的内部访问函数的调用同步。</string>
    <string name="">由 `boost::concurrent++_++node++_++map` 实例 `x` 执行的访问函数不允许调用 `x` 上的任何操作；仅当对另一 `boost::concurrent++_++node++_++map` 实例 `y` 的并发未完成操作不会直接或间接访问 `x` 时，才会允许调用 `y` 上的操作。</string>
    <string name=":432">---</string>
    <string name="">配置宏</string>
    <string name="">`BOOST_UNORDERED_DISABLE_REENTRANCY_CHECK`</string>
    <string name="">在调试版本中（更准确地说，当未定义 link:../../../../../assert/doc/html/assert.html#boost_assert_is_void[`BOOST++_++ASSERT++_++IS++_++VOID`] 时），系统会检测__容器重入__行为（即在访问 `m` 元素的函数内部非法调用 `m` 上的操作），并通过 `BOOST++_++ASSERT++_++MSG` 发出信号。若需关注运行时速度，可通过全局定义此宏来禁用该功能。</string>
    <string name=":445">---</string>
    <string name="">`BOOST_UNORDERED_ENABLE_STATS`</string>
    <string name="">全局定义此宏以启用容器的 xref:reference/stats.adoc#stats[统计计算] 功能。请注意，此选项会降低多数操作的总体性能。</string>
    <string name=":452">---</string>
    <string name="">类型定义</string>
    <string name="">用于保存提取的表元素的类，建模为 https://en.cppreference.com/w/cpp/container/node_handle[NodeHandle] 。</string>
    <string name=":464">---</string>
    <string name="">内部类模板的特化：</string>
    <string name="">其中 `NodeType` = `node++_++type` 。</string>
    <string name=":485">---</string>
    <string name="">常量</string>
    <string name="">```cpp static constexpr size_type bulk_visit_size; ```</string>
    <string name="">内部用于 xref:concurrent_node_map_bulk_visit[批量访问] 操作的块大小。</string>
    <string name=":495">---</string>
    <string name="">构造函数</string>
    <string name="">默认构造函数</string>
    <string name="">```c++ concurrent_node_map(); ```</string>
    <string name="">构造一个空哈希表，使用 `hasher()` 作为哈希函数，`key_equal()` 作为键相等谓词，`allocator_type()` 作为分配器。</string>
    <string name=":508">后置条件：;; `size() == 0`\n要求：;; 若使用默认参数，则 `hasher`、`key_equal` 和 `allocator_type` 必须满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[默认可构造]。</string>
    <string name=":511">---</string>
    <string name="">桶数构造函数</string>
    <string name="">```c++ explicit concurrent_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=":525">后置条件：;; `size() == 0`\n要求：;; 若使用默认参数，则 `hasher`、`key_equal` 和 `allocator_type` 必须满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[默认可构造]。</string>
    <string name=":528">---</string>
    <string name="">迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数、 `eql` 作为键相等性谓词、 `a` 作为分配器，并将 `++[++f, l)` 范围内的元素插入其中。</string>
    <string name=":544">要求;; 若使用默认值，则 `hasher` 、 `key++_++equal` 和 `allocator++_++type` 需满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造] 要求。</string>
    <string name=":546">---</string>
    <string name="">复制构造函数</string>
    <string name="">```c++ concurrent_node_map(concurrent_node_map const&amp; other); ```</string>
    <string name="">**复制构造函数**。复制容器内元素、哈希函数、谓词及分配器。</string>
    <string name="">若 `Allocator::select_on_container_copy_construction` 存在且签名正确，则分配器将由其返回值构造。</string>
    <string name="">要求：;; `value_type` 是可复制构造的\n并发：;; 阻塞 `other`</string>
    <string name=":561">---</string>
    <string name="">移动构造函数</string>
    <string name="">```c++ concurrent_node_map(concurrent_node_map&amp;&amp; other); ```</string>
    <string name="">移动构造函数。将 `other` 的内部桶数组直接转移到新哈希表中。哈希函数、谓词和分配器均从 `other` 移动构造而来。若启用了 xref:concurrent_node_map_boost_unordered_enable_stats[统计功能]，则从 `other` 转移内部统计信息，并调用 `other.reset_stats()`。</string>
    <string name=":574">并发：;; 阻塞 `other`。</string>
    <string name=":576">---</string>
    <string name="">带分配器的迭代器范围构造函数</string>
    <string name="">```c++ template<class inputiterator=""> concurrent_node_map(InputIterator f, InputIterator l, const allocator_type&amp; a); ```</class></string>
    <string name="">构造一个以 `a` 为分配器、使用默认哈希函数与键相等谓词的空哈希表，并将 `[f, l)` 范围内的元素插入其中。</string>
    <string name=":587">要求：;; `hasher`、`key_equal` 必须满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[默认可构造]。</string>
    <string name=":589">---</string>
    <string name="">分配器构造函数</string>
    <string name="">```c++ explicit concurrent_node_map(Allocator const&amp; a); ```</string>
    <string name="">构造一个空哈希表，使用分配器 `a`。</string>
    <string name=":598">---</string>
    <string name="">带分配器的复制构造函数</string>
    <string name="">```c++ concurrent_node_map(concurrent_node_map const&amp; other, Allocator const&amp; a); ```</string>
    <string name="">构造一个哈希表，复制 `other` 的容器元素、哈希函数和谓词，但使用分配器 `a`。</string>
    <string name=":608">并发：;; 阻塞 `other`。</string>
    <string name=":610">---</string>
    <string name="">带分配器的移动构造函数</string>
    <string name="">```c++ concurrent_node_map(concurrent_node_map&amp;&amp; other, Allocator const&amp; a); ```</string>
    <string name="">若 `a == other.get_allocator()`，则将 `other` 的元素直接转移到新哈希表中；否则从 `other` 的元素移动构造出新元素。哈希函数与谓词从 `other` 移动构造而来，分配器从 `a` 复制构造而来。\n若启用了 xref:concurrent_node_map_boost_unordered_enable_stats[统计功能]，仅当 `a == other.get_allocator()` 时从 `other` 转移内部统计信息，且始终调用 `other.reset_stats()`。</string>
    <string name=":625">并发：;; 阻塞 `other`。</string>
    <string name=":627">---</string>
    <string name="">基于 unordered_node_map 的移动构造函数</string>
    <string name="">```c++ concurrent_node_map(unordered_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" allocator=\"\"&gt;&amp;amp;&amp;amp; other); ```&lt;/key,&gt;</string>
    <string name="">通过 xref:#unordered_node_map[`unordered_node_map`] 进行移动构造。将 `other` 的内部桶数组直接转移到新容器中。哈希函数、谓词和分配器均从 `other` 移动构造而来。若启用了 xref:concurrent_node_map_boost_unordered_enable_stats[统计功能]，则从 `other` 转移内部统计信息，并调用 `other.reset_stats()`。</string>
    <string name="">复杂度：;; O(`bucket_count()`)</string>
    <string name=":644">---</string>
    <string name="">初始化列表构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数、 `eql` 作为键相等性谓词、 `a` 作为分配器，并 `il` 中的元素插入其中。</string>
    <string name=":659">要求;; 若使用默认值，则 `hasher` 、 `key++_++equal` 和 `allocator++_++type` 需满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造] 要求。</string>
    <string name=":661">---</string>
    <string name="">带分配器的桶数构造函数</string>
    <string name="">```c++ concurrent_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=":674">---</string>
    <string name="">带哈希函数和分配器的桶数构造函数</string>
    <string name="">```c++ concurrent_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`\n要求：;; `key_equal` 必须满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[默认可构造]。</string>
    <string name=":687">---</string>
    <string name="">带桶数和分配器的迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `a` 作为分配器以及默认的哈希函数和键相等性谓词，并将 `++[++f, l)` 范围内的元素插入其中。</string>
    <string name=":699">要求;; `hasher` 和 `key++_++equal` 需满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造] 要求。</string>
    <string name=":701">---</string>
    <string name="">带桶数和哈希函数的迭代器范围构造函数</string>
    <string name="">构造一个至少包含 `n` 个桶的空容器，使用 `hf` 作为哈希函数、 `a` 作为分配器以及默认的键相等性谓词，并将 `++[++f, l)` 范围内的元素插入其中。</string>
    <string name=":714">要求;; `key++_++equal` 需满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造] 要求。</string>
    <string name=":716">---</string>
    <string name="">带分配器的初始化列表构造函数</string>
    <string name="">```c++ concurrent_node_map(std::initializer_list<value_type> il, const allocator_type&amp; a); ```</value_type></string>
    <string name="">构造一个使用分配器 `a`、默认哈希函数和默认键相等谓词的空哈希表，并将 `il` 中的元素插入其中。</string>
    <string name=":727">Requires:;; `hasher` and `key_equal` need to be https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^].</string>
    <string name=":729">---</string>
    <string name="">带桶数和分配器的初始化列表构造函数</string>
    <string name="">```c++ concurrent_node_map(std::initializer_list<value_type> il, size_type n, const allocator_type&amp; a); ```</value_type></string>
    <string name="">构造一个至少包含 `n` 个桶的空哈希表，使用分配器 `a`、默认哈希函数和默认键相等谓词，并将 `il` 中的元素插入其中。</string>
    <string name=":740">要求：;; `hasher` 和 `key_equal` 必须满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[默认可构造]。</string>
    <string name=":742">---</string>
    <string name="">带桶数、哈希函数和分配器的初始化列表构造函数</string>
    <string name="">```c++ concurrent_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=":754">要求：;; `key_equal` 必须满足 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[默认可构造]。</string>
    <string name=":756">---</string>
    <string name="">析构函数</string>
    <string name="">```c++ ~concurrent_node_map(); ```</string>
    <string name="">注意：;; 析构函数会作用于所有元素，且所有内存都会被释放</string>
    <string name=":767">---</string>
    <string name="">赋值操作</string>
    <string name="">复制赋值</string>
    <string name="">```c++ concurrent_node_map&amp; operator=(concurrent_node_map const&amp; other); ```</string>
    <string name="">赋值运算符。销毁已存在的所有元素，从 `other` 复制赋值哈希函数和谓词；若 `Alloc::propagate_on_container_copy_assignment` 存在且其值为 `true`，则从 `other` 复制赋值分配器；最后插入 `other` 元素的副本。</string>
    <string name="">要求：;; `value_type` 必须满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[可复制插入]\n并发：;; 阻塞 `*this` 与 `other`</string>
    <string name=":785">---</string>
    <string name="">移动赋值</string>
    <string name="">```c++ concurrent_node_map&amp;amp; operator=(concurrent_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); ```移动赋值运算符。销毁已存在的所有元素，与 `other` 交换哈希函数和谓词；若 `Alloc::propagate_on_container_move_assignment` 存在且其值为 `true`，则从 `other` 移动赋值分配器。\n若此时分配器与 `other.get_allocator()` 相等，则将 `other` 的内部桶数组直接转移给 `*this`；否则插入 `other` 元素的移动构造副本。若启用了 xref:concurrent_node_map_boost_unordered_enable_stats[统计功能]，仅当最终分配器与 `other.get_allocator()` 相等时，从 `other` 转移内部统计信息，且始终调用 `other.reset_stats()`。&lt;/pointer,&gt;&lt;/allocator&gt;&lt;/allocator&gt;</string>
    <string name="">并发：;; 阻塞 `*this` 与 `other`</string>
    <string name=":805">---</string>
    <string name="">初始化列表赋值</string>
    <string name="">```c++ concurrent_node_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[可复制插入]\n并发：;; 阻塞 `*this`</string>
    <string name=":818">---</string>
    <string name="">访问操作</string>
    <string name="">[c]visit</string>
    <string name="">```c++ template&lt;class f=\"\"&gt; size_t visit(const key_type&amp;amp; k, F f); template&lt;class f=\"\"&gt; size_t visit(const key_type&amp;amp; k, F f) const; template&lt;class f=\"\"&gt; size_t cvisit(const key_type&amp;amp; k, F f) const; template&lt;class k,=\"\" class=\"\" f=\"\"&gt; size_t visit(const K&amp;amp; k, F f); template&lt;class k,=\"\" class=\"\" f=\"\"&gt; size_t visit(const K&amp;amp; k, F f) const; template&lt;class k,=\"\" class=\"\" f=\"\"&gt; size_t cvisit(const K&amp;amp; k, F f) const; ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">若存在键与 `k` 等价的元素 `x`，则以 `x` 的引用调用函数 `f`。当且仅当 `*this` 为常量时，该引用为常量引用。</string>
    <string name="">返回值：;; 访问的元素数量（0 或 1）。\n注意：;; 仅当 `Hash::is_transparent` 与 `Pred::is_transparent` 为合法成员别名时，`template&lt;class k,=\"\" class=\"\" f=\"\"&gt;` 重载版本才会参与重载决议。库假定 `Hash` 可同时以 `K` 类型与 `Key` 类型调用，且 `Pred` 是透明的。这支持异构查找，避免了实例化 `Key` 类型对象的开销。&lt;/class&gt;</string>
    <string name=":840">---</string>
    <string name="">批量访问</string>
    <string name="">```c++ template&lt;class fwditerator,=\"\" class=\"\" f=\"\"&gt; size_t visit(FwdIterator first, FwdIterator last, F f); template&lt;class fwditerator,=\"\" class=\"\" f=\"\"&gt; size_t visit(FwdIterator first, FwdIterator last, F f) const; template&lt;class fwditerator,=\"\" class=\"\" f=\"\"&gt; size_t cvisit(FwdIterator first, FwdIterator last, F f) const; ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">对范围 [`first`, `last`) 中的每个元素 `k`，若容器内存在键与 `k` 等价的元素 `x`，则以 `x` 的引用调用函数 `f`。当且仅当 `*this` 为常量时，该引用为常量引用。</string>
    <string name="">尽管功能上等同于对每个键单独调用 `[c]visit`，但得益于内部的流式优化，批量访问通常性能更高。建议当 `std::distance(first,last)` 至少达到 `bulk_visit_size` 时使用批量访问以获得性能提升；超过该大小后，性能不会进一步提升。</string>
    <string name="">要求：;; `FwdIterator` 是前向迭代器（C++11 至 C++17），或满足 C++20 及之后标准的 `std::forward_iterator` 概念。\n对于 `K = std::iterator_traits<fwditerator>::value_type`，要么 `K` 是 `key_type`，要么 `Hash::is_transparent` 和 `Pred::is_transparent` 是合法的成员别名。\n在后一种情况下，库假定 `Hash` 可同时接收 `K` 与 `Key` 类型调用，且 `Pred` 是透明的。这支持异构查找，避免了实例化 `Key` 类型对象的开销。\n返回值：;; 被访问的元素总数。</fwditerator></string>
    <string name=":876">---</string>
    <string name="">[c]visit_all</string>
    <string name="">```c++ template<class f=""> size_t visit_all(F f); template<class f=""> size_t visit_all(F f) const; template<class f=""> size_t cvisit_all(F f) const; ```</class></class></class></string>
    <string name="">依次以表中每个元素的引用调用函数 `f`。当且仅当 `*this` 为常量时，该引用为常量引用。</string>
    <string name="">返回值：;; 被访问的元素数量。</string>
    <string name=":892">---</string>
    <string name="">并行 ++[++c++]++visit++_++all</string>
    <string name="">```c++ template&lt;class executionpolicy,=\"\" class=\"\" f=\"\"&gt; void visit_all(ExecutionPolicy&amp;amp;&amp;amp; policy, F f); template&lt;class executionpolicy,=\"\" class=\"\" f=\"\"&gt; void visit_all(ExecutionPolicy&amp;amp;&amp;amp; policy, F f) const; template&lt;class executionpolicy,=\"\" class=\"\" f=\"\"&gt; void cvisit_all(ExecutionPolicy&amp;amp;&amp;amp; policy, F f) const; ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">以表中每个元素的引用调用函数 `f`。当且仅当 `*this` 为常量时，该引用为常量引用。执行过程将根据指定执行策略的语义进行并行化处理。</string>
    <string name="">抛出异常：;; 依据所使用执行策略的异常处理机制，若 `f` 内部抛出异常，则可能调用 `std::terminate`。\n注意：;; 仅在支持 C++17 并行算法的编译器中可用。\n仅当 `std::is_execution_policy_v&lt;std::remove_cvref_t&lt;executionpolicy&gt;&amp;gt;` 为 `true` 时，这些重载版本才参与重载决议。\n不允许使用无序执行策略。&lt;/std::remove_cvref_t&lt;executionpolicy&gt;</string>
    <string name=":913">---</string>
    <string name="">[c]visit_while</string>
    <string name="">```c++ template<class f=""> bool visit_while(F f); template<class f=""> bool visit_while(F f) const; template<class f=""> bool cvisit_while(F f) const; ```</class></class></class></string>
    <string name="">依次以哈希表中每个元素的引用调用函数 `f`，直到 `f` 返回 `false` 或遍历完所有元素。当且仅当 `*this` 为常量时，元素的引用为常量引用。</string>
    <string name="">返回值：;; 当且仅当 `f` 曾返回 `false` 时，返回 `false`。</string>
    <string name=":930">---</string>
    <string name="">并行 ++[++c++]++visit++_++while</string>
    <string name="">```c++ template&lt;class executionpolicy,=\"\" class=\"\" f=\"\"&gt; bool visit_while(ExecutionPolicy&amp;amp;&amp;amp; policy, F f); template&lt;class executionpolicy,=\"\" class=\"\" f=\"\"&gt; bool visit_while(ExecutionPolicy&amp;amp;&amp;amp; policy, F f) const; template&lt;class executionpolicy,=\"\" class=\"\" f=\"\"&gt; bool cvisit_while(ExecutionPolicy&amp;amp;&amp;amp; policy, F f) const; ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">以哈希表中每个元素的引用调用函数 `f`，直到 `f` 返回 `false` 或遍历完所有元素。当且仅当 `*this` 为常量时，元素的引用为常量引用。执行过程将根据指定执行策略的语义进行并行化处理。</string>
    <string name="">返回值：;; 当且仅当 `f` 曾返回 `false` 时，返回 `false`。\n抛出异常：;; 依据所使用执行策略的异常处理机制，若 `f` 内部抛出异常，则可能调用 `std::terminate`。\n注意：;; 仅在支持 C++17 并行算法的编译器中可用。\n仅当 `std::is_execution_policy_v&lt;std::remove_cvref_t&lt;executionpolicy&gt;&amp;gt;` 为 `true` 时，这些重载版本才参与重载决议。\n不允许使用无序执行策略。\n并行化意味着：一旦 `f` 返回 `false`，执行流程**不一定会立即终止**，因此 `f` 可能还会被继续用于后续元素，且这些调用的返回值同样为 `false`。&lt;/std::remove_cvref_t&lt;executionpolicy&gt;</string>
    <string name=":957">---</string>
    <string name="">大小与容量</string>
    <string name="">空</string>
    <string name="">```c++ [[nodiscard]] bool empty() const noexcept; ```</string>
    <string name="">返回值：;; `size() == 0`（容器为空时返回 true，否则返回 false）</string>
    <string name=":970">---</string>
    <string name="">大小</string>
    <string name="">```c++ size_type size() const noexcept; ```</string>
    <string name="">返回值：;; 哈希表中的元素总数。</string>
    <string name="">注意：;; 在存在并发插入操作时，返回的值可能无法精确反映函数执行完成后哈希表的真实大小。</string>
    <string name=":985">---</string>
    <string name="">max_size</string>
    <string name="">```c++ size_type max_size() const noexcept; ```</string>
    <string name="">返回值：;; 哈希表能容纳的最大元素数量（最大容量）。</string>
    <string name=":996">---</string>
    <string name="">修改器</string>
    <string name="">原地构造</string>
    <string name="">```c++ template<class... args=""> bool emplace(Args&amp;&amp;... args); ```</class...></string>
    <string name="">当且仅当哈希表中不存在等价键的元素时，才会使用参数 `args` 构造对象并插入到哈希表中。</string>
    <string name="">要求：;; `value_type` 可由参数 `args` 构造。\n返回值：;; 成功插入元素时返回 `true`。\n并发特性：;; 当对当前对象执行重哈希操作时会阻塞。\n注意：;; 若 `args...` 格式为 `k,v`，则会仅使用参数 `k` 进行键检查，**直到确定需要插入元素时**，才会构造完整对象。</string>
    <string name=":1013">---</string>
    <string name="">复制插入</string>
    <string name="">```c++ bool insert(const value_type&amp; obj); bool insert(const init_type&amp; obj); ```</string>
    <string name=":1021">当且仅当哈希表中不存在键等价的元素时，将`obj`插入表中。</string>
    <string name="">要求：;; `value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^] 要求。返回值：;; 成功执行插入操作则返回 `true`。并发特性：;; 对当前对象执行重哈希操作时会发生阻塞。注意：;; 若调用形式为 `insert(x)`，且 `x` 可同时隐式转换为 `const value_type&amp;` 与 `const init_type&amp;`，该调用不存在歧义，会选用 `init_type` 重载版本。</string>
    <string name=":1029">---</string>
    <string name="">移动插入</string>
    <string name="">```c++ bool insert(value_type&amp;&amp; obj); bool insert(init_type&amp;&amp; obj); ```</string>
    <string name=":1037">当且仅当哈希表中不存在等价键的元素时，将`obj`插入表中。</string>
    <string name="">要求：;; `value_type` 满足 https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^] 要求。\n返回值：;; 成功执行插入操作则返回 `true`。\n并发特性：;; 对当前对象执行重哈希操作时会发生阻塞。\n注意：;; 若调用形式为 `insert(x)`，且 `x` 可同时转换为 `value_type&amp;&amp;` 与 `init_type&amp;&amp;`，该调用不存在歧义，会选用 `init_type` 重载版本。</string>
    <string name=":1045">---</string>
    <string name="">迭代器范围插入</string>
    <string name="">```c++ template<class inputiterator=""> size_type insert(InputIterator first, InputIterator last); ```</class></string>
    <string name=":1052">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1059">返回值：;; 成功插入的元素数量。</string>
    <string name=":1061">---</string>
    <string name="">初始化列表插入</string>
    <string name="">```c++ size_type insert(std::initializer_list<value_type> il); ```</value_type></string>
    <string name=":1068">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1075">返回值：;; 成功插入的元素个数。</string>
    <string name=":1077">---</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=":1088">返回值：;; 由`inserted`和`node`构造的`insert_return_type`对象：</string>
    <string name=":1089">若 `nh` 为空，则 `inserted` 为 `false` 且 `node` 为空。</string>
    <string name=":1090">若插入操作成功，则 `inserted` 为 true， 且 `node` 为空。</string>
    <string name=":1091">若插入操作失败，则 `inserted` 为 false ，且 `node` 保留 `nh` 的原值。</string>
    <string name="">若 `nh` 非空，则当且仅当容器中不存在键等价于 `nh.key()` 的元素时，插入关联元素。函数返回时 `nh` 为空。</string>
    <string name=":1096">---</string>
    <string name="">emplace_or_[c]visit</string>
    <string name="">```c++ template&lt;class... args,=\"\" class=\"\" f=\"\"&gt; bool emplace_or_visit(Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); template&lt;class... args,=\"\" class=\"\" f=\"\"&gt; bool emplace_or_cvisit(Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); ```&lt;/class...&gt;&lt;/class...&gt;</string>
    <string name="">若表中无等价键元素，则使用参数`args`构造对象并插入表中。否则，调用`f`并传入等价元素的引用；当且仅当使用`emplace_or_cvisit`时，该引用为常量引用。</string>
    <string name="">要求：;; `value_type` 可由参数 `args` 构造。\n返回值：;; 成功执行插入操作则返回 `true`。\n并发特性：;; 对当前对象执行重哈希操作时会发生阻塞。\n注意：;; 该接口仅为说明性接口，因为C++不允许在可变参数包之后声明参数 `f`。</string>
    <string name=":1113">---</string>
    <string name="">复制 insert++_++or++_[++c++]++visit</string>
    <string name="">```c++ template<class f=""> bool insert_or_visit(const value_type&amp; obj, F f); template<class f=""> bool insert_or_cvisit(const value_type&amp; obj, F f); template<class f=""> bool insert_or_visit(const init_type&amp; obj, F f); template<class f=""> bool insert_or_cvisit(const init_type&amp; obj, F f); ```</class></class></class></class></string>
    <string name=":1123">当且仅当哈希表中不存在等价键的元素时，将`obj`插入表中。否则，调用`f`并传入等价元素的引用；当且仅当使用`*_cvisit`重载版本时，该引用为常量引用。</string>
    <string name="">要求：;; `value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^] 要求。\n返回值：;; 成功执行插入操作则返回 `true`。\n并发特性：;; 对当前对象执行重哈希操作时会发生阻塞。\n注意：;; 在形式为 `insert_or_[c]visit(obj, f)` 的调用中，仅当 `std::remove_cv&lt;std::remove_reference&lt;decltype(obj)&gt;::type&amp;gt;::type` 为 `value_type` 时，接受 `const value_type&amp;amp;` 参数的重载版本才会参与重载决议。&lt;/std::remove_reference&lt;decltype(obj)&gt;</string>
    <string name=":1133">---</string>
    <string name="">移动 insert++_++or++_[++c++]++visit</string>
    <string name="">```c++ template<class f=""> bool insert_or_visit(value_type&amp;&amp; obj, F f); template<class f=""> bool insert_or_cvisit(value_type&amp;&amp; obj, F f); template<class f=""> bool insert_or_visit(init_type&amp;&amp; obj, F f); template<class f=""> bool insert_or_cvisit(init_type&amp;&amp; obj, F f); ```</class></class></class></class></string>
    <string name=":1143">当且仅当哈希表中不存在等价键的元素时，将`obj`插入表中。否则，调用`f`并传入等价元素的引用；当且仅当使用`*_cvisit`重载版本时，该引用为常量引用。</string>
    <string name="">要求：;; `value_type` 满足 https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^] 要求。\n返回值：;; 成功执行插入操作则返回 `true`。\n并发特性：;; 对当前对象执行重哈希操作时会发生阻塞。\n注意：;; 在形式为 `insert_or_[c]visit(obj, f)` 的调用中，仅当 `std::remove_reference&lt;decltype(obj)&gt;::type` 为 `value_type` 时，接受 `value_type&amp;amp;&amp;amp;` 参数的重载版本才会参与重载决议。&lt;/decltype(obj)&gt;</string>
    <string name=":1153">---</string>
    <string name="">迭代器范围插入或访问</string>
    <string name="">```c++ template&lt;class inputiterator,class=\"\" f=\"\"&gt; size_type insert_or_visit(InputIterator first, InputIterator last, F f); template&lt;class inputiterator,class=\"\" f=\"\"&gt; size_type insert_or_cvisit(InputIterator first, InputIterator last, F f); ```&lt;/class&gt;&lt;/class&gt;</string>
    <string name=":1163">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1170">返回值：;; 成功插入的元素个数。</string>
    <string name=":1172">---</string>
    <string name="">初始化列表插入或访问</string>
    <string name="">```c++ template<class f=""> size_type insert_or_visit(std::initializer_list<value_type> il, F f); template<class f=""> size_type insert_or_cvisit(std::initializer_list<value_type> il, F f); ```</value_type></class></value_type></class></string>
    <string name=":1180">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1187">返回值：;; 成功插入的元素个数。</string>
    <string name=":1189">---</string>
    <string name="">节点插入或访问</string>
    <string name="">```c++ template<class f=""> insert_return_type insert_or_visit(node_type&amp;&amp; nh, F f); template<class f=""> insert_return_type insert_or_cvisit(node_type&amp;&amp; nh, F f); ```</class></class></string>
    <string name="">若`nh`为空，则不执行任何操作。否则，当且仅当哈希表中不存在与`nh.key()`等价的键时，将关联元素插入表中。若存在等价键，则调用`f`并传入等价元素的引用；当且仅当使用`insert_or_cvisit`时，该引用为常量引用。</string>
    <string name=":1202">返回值：;; 由 `inserted` 和 `node` 构造的 `insert_return_type` 对象：</string>
    <string name=":1203">若 `nh` 为空，则 `inserted` 为 `false` 且 `node` 为空。</string>
    <string name=":1204">若插入操作成功，则 `inserted` 为 true， 且 `node` 为空。</string>
    <string name=":1205">若插入操作失败，则 `inserted` 为 false ，且 `node` 保留 `nh` 的原值。</string>
    <string name="">若 `nh` 为空，则不执行任何操作。否则，当且仅当容器中不存在键等价于 `nh.key()` 的元素时，插入其关联的元素；否则，以等价元素的引用为参数调用 `f` ；当且仅当使用 `insert++_++or++_++cvisit` 时该引用为常量引用。</string>
    <string name=":1210">---</string>
    <string name="">emplace_and_[c]visit</string>
    <string name="">```c++ template&lt;class... args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool emplace_and_visit(Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); template&lt;class... args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool emplace_and_cvisit(Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); ```&lt;/class...&gt;&lt;/class...&gt;</string>
    <string name="">若表中无等价键元素，则使用参数`args`构造对象并插入表中，随后以非常量引用指向新创建的元素并调用`f1`。否则，以指向等价元素的引用调用`f2`；当且仅当使用`emplace_and_cvisit`时，该引用为常量引用。</string>
    <string name="">要求：;; `value_type` 可由 `args` 构造。\n返回值：;; 若执行插入操作则返回 `true`。\n并发特性：;; 阻塞对 `*this` 的重哈希操作。\n注意：;; 该接口仅作说明用途，因为 C++ 不允许在可变参数包之后声明参数 `f1` 和 `f2`。</string>
    <string name=":1230">---</string>
    <string name="">复制 insert++_++and++_[++c++]++visit</string>
    <string name="">```c++ template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_visit(const value_type&amp;amp; obj, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_cvisit(const value_type&amp;amp; obj, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_visit(const init_type&amp;amp; obj, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_cvisit(const init_type&amp;amp; obj, F1 f1, F2 f2); ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name=":1240">当且仅当哈希表中不存在等价键的元素时，将`obj`插入表中，随后以非常量引用指向新创建的元素并调用`f1`。否则，以指向等价元素的引用调用`f2`；当且仅当使用`*_cvisit`重载版本时，该引用为常量引用。</string>
    <string name="">要求：;; `value_type` 满足 https://en.cppreference.com/w/cpp/named_req/CopyInsertable[CopyInsertable^] 要求。\n返回值：;; 若执行插入操作则返回 `true`。\n并发特性：;; 阻塞对 `*this` 的重哈希操作。\n注意：;; 在形式为 `insert_and_[c]visit(obj, f1, f2)` 的调用中，仅当 `std::remove_cv&lt;std::remove_reference&lt;decltype(obj)&gt;::type&amp;gt;::type` 为 `value_type` 时，接受 `const value_type&amp;amp;` 参数的重载版本才会参与重载决议。&lt;/std::remove_reference&lt;decltype(obj)&gt;</string>
    <string name=":1251">---</string>
    <string name="">移动 insert++_++and++_[++c++]++visit</string>
    <string name="">```c++ template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_visit(value_type&amp;amp;&amp;amp; obj, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_cvisit(value_type&amp;amp;&amp;amp; obj, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_visit(init_type&amp;amp;&amp;amp; obj, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; bool insert_and_cvisit(init_type&amp;amp;&amp;amp; obj, F1 f1, F2 f2); ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name=":1261">当且仅当哈希表中不存在等价键的元素时，将`obj`插入表中，随后以非常量引用指向新创建的元素并调用`f1`。否则，以指向等价元素的引用调用`f2`；当且仅当使用`*_cvisit`重载版本时，该引用为常量引用。</string>
    <string name="">要求：;; `value_type` 满足 https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^] 要求。\n返回值：;; 若执行插入操作则返回 `true`。\n并发特性：;; 阻塞对 `*this` 的重哈希操作。\n注意：;; 在形式为 `insert_and_[c]visit(obj, f1, f2)` 的调用中，仅当 `std::remove_reference&lt;decltype(obj)&gt;::type` 为 `value_type` 时，接受 `value_type&amp;amp;&amp;amp;` 参数的重载版本才会参与重载决议。&lt;/decltype(obj)&gt;</string>
    <string name=":1272">---</string>
    <string name="">迭代器范围插入并访问</string>
    <string name="">```c++ template&lt;class inputiterator,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; size_type insert_or_visit(InputIterator first, InputIterator last, F1 f1, F2 f2); template&lt;class inputiterator,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; size_type insert_or_cvisit(InputIterator first, InputIterator last, F1 f2, F2 f2); ```&lt;/class&gt;&lt;/class&gt;</string>
    <string name=":1282">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1289">返回值：;; 成功插入的元素个数。</string>
    <string name=":1291">---</string>
    <string name="">初始化列表插入并访问</string>
    <string name="">```c++ template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; size_type insert_and_visit(std::initializer_list&lt;value_type&gt; il, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; size_type insert_and_cvisit(std::initializer_list&lt;value_type&gt; il, F1 f1, F2 f2); ```&lt;/value_type&gt;&lt;/class&gt;&lt;/value_type&gt;&lt;/class&gt;</string>
    <string name=":1301">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1308">返回值：;; 成功插入的元素个数。</string>
    <string name=":1310">---</string>
    <string name="">节点插入并访问</string>
    <string name="">```c++ template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; insert_return_type insert_and_visit(node_type&amp;amp;&amp;amp; nh, F1 f1, F2 f2); template&lt;class f1,=\"\" class=\"\" f2=\"\"&gt; insert_return_type insert_and_cvisit(node_type&amp;amp;&amp;amp; nh, F1 f1, F2 f2); ```&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">若`nh`为空，则不执行任何操作。否则，当且仅当哈希表中不存在与`nh.key()`等价的键时，将关联元素插入表中，随后以非常量引用指向新插入的元素并调用`f1`。若存在等价键，则调用`f2`并传入等价元素的引用；当且仅当使用`insert_or_cvisit`时，该引用为常量引用。</string>
    <string name=":1326">返回值：;; 由 `inserted` 和 `node` 构造的 `insert_return_type` 对象：</string>
    <string name=":1327">若 `nh` 为空，则 `inserted` 为 `false` 且 `node` 为空。</string>
    <string name=":1328">若插入操作成功，则 `inserted` 为 true， 且 `node` 为空。</string>
    <string name=":1329">若插入操作失败，则 `inserted` 为 false ，且 `node` 保留 `nh` 的原值。</string>
    <string name="">若 `nh` 为空，则不执行任何操作。否则，当且仅当容器中不存在键等价于 `nh.key()` 的元素时，插入关联元素，并以新插入元素的非常量引用为参数调用 `f1` ；否则，以等价元素的引用为参数调用 `f2` ；当且仅当使用 `insert++_++or++_++cvisit` （此处应为 `insert++_++and++_++cvisit` ，可能是英文出了点错误）时该引用为常量引用。</string>
    <string name=":1334">---</string>
    <string name="">try_emplace</string>
    <string name="">```c++ template&lt;class... args=\"\"&gt; bool try_emplace(const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args); template&lt;class... args=\"\"&gt; bool try_emplace(key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args); template&lt;class k,=\"\" class...=\"\" args=\"\"&gt; bool try_emplace(K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args); ```&lt;/class&gt;&lt;/class...&gt;&lt;/class...&gt;</string>
    <string name="">若表中不存在键为`k`的元素，则将由`k`和`args`构造的元素插入表中。</string>
    <string name="">返回值：;; 若执行插入操作则返回 true。\n并发特性：;; 阻塞对 *this 的重哈希操作。\n注意：;; 该函数与 xref:#concurrent_node_map_emplace [emplace] 类似，区别在于：若表中已存在等价键的元素，则不会构造 value_type；否则，构造方式如下：</string>
    <string name=":1354">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=":1359">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:#concurrent_node_map_emplace[emplace] 不同，该函数会直接将所有参数转发给 `value_type` 的构造函数。</string>
    <string name="">仅当 Hash::is_transparent 与 Pred::is_transparent 为合法的成员类型别名时，template&lt;class k,=\"\" args=\"\"&gt; 这个重载版本才会参与重载决议。\n库实现假定 Hash 可同时接受 K 类型与 Key 类型作为参数，且 Pred 是透明的。\n这一特性支持异构查找，从而避免实例化 Key 类型对象带来的性能开销。&lt;/class&gt;</string>
    <string name=":1368">--</string>
    <string name=":1370">---</string>
    <string name="">try_emplace_or_[c]visit</string>
    <string name="">```c++ template&lt;class... args,=\"\" class=\"\" f=\"\"&gt; bool try_emplace_or_visit(const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); template&lt;class... args,=\"\" class=\"\" f=\"\"&gt; bool try_emplace_or_cvisit(const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); template&lt;class... args,=\"\" class=\"\" f=\"\"&gt; bool try_emplace_or_visit(key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); template&lt;class... args,=\"\" class=\"\" f=\"\"&gt; bool try_emplace_or_cvisit(key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); template&lt;class k,=\"\" class...=\"\" args,=\"\" class=\"\" f=\"\"&gt; bool try_emplace_or_visit(K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); template&lt;class k,=\"\" class...=\"\" args,=\"\" class=\"\" f=\"\"&gt; bool try_emplace_or_cvisit(K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F&amp;amp;&amp;amp; f); ```&lt;/class&gt;&lt;/class&gt;&lt;/class...&gt;&lt;/class...&gt;&lt;/class...&gt;&lt;/class...&gt;</string>
    <string name="">若表中不存在键为`k`的元素，则将由`k`和`args`构造的元素插入表中。\n否则，以指向等价元素的引用调用`f`；当且仅当使用`*_cvisit`重载版本时，该引用为常量引用。</string>
    <string name=":1392">返回值：;; 若执行插入操作则返回 true。\n并发特性：;; 阻塞对 *this 的重哈希操作。\n注意：;; 若已存在等价键的元素，则不会构造 value_type；否则，构造方式如下：</string>
    <string name=":1400">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=":1405">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="">该接口仅为说明性用法，因为 C++ 不允许在可变参数包之后声明参数 `f`。</string>
    <string name="">仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员类型别名时，`template&lt;class k,=\"\" args,=\"\" class=\"\" f=\"\"&gt;` 这些重载版本才会参与重载决议。库假定 `Hash` 可同时接受 `K` 类型和 `Key` 类型作为参数，且 `Pred` 是透明的。这支持**异构查找**，从而避免实例化 `Key` 类型对象带来的性能开销。&lt;/class&gt;</string>
    <string name=":1414">--</string>
    <string name=":1416">---</string>
    <string name="">try_emplace_and_[c]visit</string>
    <string name="">```c++ template&lt;class... args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool try_emplace_and_visit(const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); template&lt;class... args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool try_emplace_and_cvisit(const key_type&amp;amp; k, Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); template&lt;class... args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool try_emplace_and_visit(key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); template&lt;class... args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool try_emplace_and_cvisit(key_type&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); template&lt;class k,=\"\" class...=\"\" args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool try_emplace_and_visit(K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); template&lt;class k,=\"\" class...=\"\" args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt; bool try_emplace_and_cvisit(K&amp;amp;&amp;amp; k, Args&amp;amp;&amp;amp;... args, F1&amp;amp;&amp;amp; f1, F2&amp;amp;&amp;amp; f2); ```&lt;/class&gt;&lt;/class&gt;&lt;/class...&gt;&lt;/class...&gt;&lt;/class...&gt;&lt;/class...&gt;</string>
    <string name="">若表中不存在键为`k`的元素，则将由`k`和`args`构造的元素插入表中，随后以非常量引用指向新创建的元素并调用`f1`。\n否则，以指向等价元素的引用调用`f2`；当且仅当使用`*_cvisit`重载版本时，该引用为常量引用。</string>
    <string name=":1439">返回值：;; 若执行插入操作则返回 true。\n并发特性：;; 阻塞对 *this 的重哈希操作。\n注意：;; 若已存在等价键的元素，则不会构造 value_type；否则，构造方式如下：</string>
    <string name=":1447">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=":1452">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="">该接口仅为说明性用法，因为 C++ 不允许在可变参数包之后声明 `f1` 和 `f2` 参数。</string>
    <string name="">仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 为有效成员类型别名时，`template&lt;class k,=\"\" args,=\"\" class=\"\" f1,=\"\" f2=\"\"&gt;` 这些重载版本才会参与重载决议。\n库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。\n这支持**异构查找**，从而避免实例化 `Key` 类型对象带来的性能开销。&lt;/class&gt;</string>
    <string name=":1461">--</string>
    <string name=":1463">---</string>
    <string name="">insert_or_assign</string>
    <string name="">```c++ template&lt;class m=\"\"&gt; bool insert_or_assign(const key_type&amp;amp; k, M&amp;amp;&amp;amp; obj); template&lt;class m=\"\"&gt; bool insert_or_assign(key_type&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj); template&lt;class k,=\"\" class=\"\" m=\"\"&gt; bool insert_or_assign(K&amp;amp;&amp;amp; k, M&amp;amp;&amp;amp; obj); ```&lt;/class&gt;&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">向表中插入新元素，或通过为已包含的值赋值来更新现有元素。</string>
    <string name="">若表中存在键为`k`的元素，则通过`std::forward<m>(obj)`赋值来更新该元素。</m></string>
    <string name="">若不存在该元素，则以如下形式添加到表中：</string>
    <string name="">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="">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="">返回值：;; 若执行插入操作则返回 `true`。\n并发特性：;; 阻塞对 `*this` 的重哈希操作。\n注意：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员类型别名时，`template&lt;class k,=\"\" class=\"\" m=\"\"&gt;` 才参与重载决议。库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。这支持异构查找，从而避免实例化 `Key` 类型对象带来的性能开销。&lt;/class&gt;</string>
    <string name=":1494">---</string>
    <string name="">擦除</string>
    <string name="">```c++ size_type erase(const key_type&amp; k); template<class k=""> size_type erase(const K&amp; k); ```</class></string>
    <string name="">若存在键与 `k` 等价的元素，则删除该元素。</string>
    <string name="">返回值：;; 删除的元素数量（0 或 1）。\n抛出异常：;; 仅当 `hasher` 或 `key_equal` 抛出异常时才会抛出。\n注意：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员类型别名时，`template<class k="">` 重载版本才参与重载决议。库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。这支持异构查找，从而避免实例化 `Key` 类型对象带来的性能开销。</class></string>
    <string name=":1509">---</string>
    <string name="">erase_if by Key</string>
    <string name="">```c++ template&lt;class f=\"\"&gt; size_type erase_if(const key_type&amp;amp; k, F f); template&lt;class k,=\"\" class=\"\" f=\"\"&gt; size_type erase_if(const K&amp;amp; k, F f); ```&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">若存在键与 `k` 等价的元素 `x`，且 `f(x)` 返回 `true`，则删除该元素。</string>
    <string name="">返回值：;; 删除的元素数量（0 或 1）。\n抛出异常：;; 仅当 `hasher`、`key_equal` 或 `f` 抛出异常时才会抛出。\n注意：;; `f` 接收指向 `x` 的非常量引用。\n`template&lt;class k,=\"\" class=\"\" f=\"\"&gt;` 重载版本仅在 `std::is_execution_policy_v&lt;std::remove_cvref_t&lt;executionpolicy&gt;&amp;gt;` 为 `false` 时参与重载决议。\n`template&lt;class k,=\"\" class=\"\" f=\"\"&gt;` 重载版本仅在 `Hash::is_transparent` 和 `Pred::is_transparent` 为有效成员类型别名时参与重载决议。库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。这支持异构查找，从而避免实例化 `Key` 类型对象带来的性能开销。&lt;/class&gt;&lt;/std::remove_cvref_t&lt;executionpolicy&gt;&lt;/class&gt;</string>
    <string name=":1528">---</string>
    <string name=":1530">erase_if</string>
    <string name="">```c++ template<class f=""> size_type erase_if(F f); ```</class></string>
    <string name="">依次以非常量引用为参数，对表中的每个元素调用 `f`，并删除所有 `f` 返回 `true` 的元素。</string>
    <string name="">返回值：;; 删除的元素总数。\n抛出异常：;; 仅当 `f` 抛出异常时才会抛出。</string>
    <string name=":1541">---</string>
    <string name="">并行条件擦除</string>
    <string name="">```c++ template&lt;class executionpolicy,=\"\" class=\"\" f=\"\"&gt; void erase_if(ExecutionPolicy&amp;amp;&amp;amp; policy, F f); ```&lt;/class&gt;</string>
    <string name="">根据指定执行策略的语义并行执行操作：依次以**非常量引用**为参数对表中的每个元素调用 `f`，并删除所有 `f` 返回 `true` 的元素。</string>
    <string name="">抛出异常：;; 依据所使用执行策略的异常处理机制，若 `f` 内部抛出异常，可能会调用 `std::terminate`。注意：;; 仅在支持 C++17 并行算法的编译器中可用。该重载版本仅在`std::is_execution_policy_v&lt;std::remove_cvref_t&lt;executionpolicy&gt;&amp;gt;` 为 `true` 时参与重载决议。不允许使用无序执行策略。&lt;/std::remove_cvref_t&lt;executionpolicy&gt;</string>
    <string name=":1559">---</string>
    <string name="">交换</string>
    <string name="">```c++ void swap(concurrent_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="">若声明了 `Allocator::propagate_on_container_swap` 且其值为 `true`，则交换两个表的分配器；否则，使用不相等的分配器进行交换会导致未定义行为。</string>
    <string name="">抛出异常：;; 除非 `key_equal` 或 `hasher` 在交换时抛出异常，否则不抛出任何异常。\n并发特性：;; 阻塞当前容器 `*this` 与目标容器 `other`。</string>
    <string name=":1576">---</string>
    <string name="">extract</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` 对象；若未提取任何元素，则为空。抛出异常：;; 仅当 `hasher` 或 `key_equal` 抛出异常时才会抛出。注意：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员类型别名时，`template<class k="">` 重载版本才参与重载决议。库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。这支持异构查找，从而避免实例化 `Key` 类型对象带来的性能开销。</class></string>
    <string name=":1591">---</string>
    <string name="">条件提取</string>
    <string name="">```c++ template&lt;class f=\"\"&gt; node_type extract_if(const key_type&amp;amp; k, F f); template&lt;class k,=\"\" class=\"\" f=\"\"&gt; node_type extract_if(K&amp;amp;&amp;amp; k, F f); ```&lt;/class&gt;&lt;/class&gt;</string>
    <string name="">若存在键与 `k` 等价的元素 `x`，且 `f(x)` 返回 `true`，则提取该元素。</string>
    <string name="">返回值：;; 一个存储被提取元素的 `node_type` 对象；若未提取任何元素，则为空。\n抛出异常：;; 仅当 `hasher`、`key_equal` 或 `f` 抛出异常时才会抛出。\n注意：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员类型别名时，`template<class k="">` 重载版本才参与重载决议。库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。这支持异构查找，从而避免实例化 `Key` 类型对象带来的性能开销。</class></string>
    <string name=":1606">---</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()`\n并发特性：;; 阻塞当前容器 `*this`。</string>
    <string name=":1619">---</string>
    <string name="">合并</string>
    <string name="">```c++ template&lt;class h2,=\"\" class=\"\" p2=\"\"&gt; size_type merge(concurrent_node_map&lt;key, t,=\"\" h2,=\"\" p2,=\"\" allocator=\"\"&gt;&amp;amp; source); template&lt;class h2,=\"\" class=\"\" p2=\"\"&gt; size_type merge(concurrent_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`** 中的元素**移动插入**到当前容器，并从 `source` 中删除这些元素。</string>
    <string name="">返回值：;; 插入的元素数量。\n并发特性：;; 阻塞当前容器 `*this` 与源容器 `source`。</string>
    <string name=":1635">---</string>
    <string name="">观察器</string>
    <string name="">get++_++allocator</string>
    <string name="">``` allocator_type get_allocator() const noexcept; ```</string>
    <string name="">返回值：;; 表的分配器。</string>
    <string name=":1647">---</string>
    <string name="">哈希函数</string>
    <string name="">``` hasher hash_function() const; ```</string>
    <string name="">返回值：;; 表的哈希函数。</string>
    <string name=":1657">---</string>
    <string name="">key_eq</string>
    <string name="">``` key_equal key_eq() const; ```</string>
    <string name="">返回值：;; 表的键相等性谓词。</string>
    <string name=":1667">---</string>
    <string name="">映射操作</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` 等价的元素数量（值为 0 或 1）。\n注意：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员类型别名时，`template<class k="">` 重载版本才参与重载决议。库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。这支持异构查找，从而避免实例化 `Key` 类型对象带来的性能开销。\n在存在并发插入操作的情况下，返回的值可能无法精确反映执行后容器的真实状态。</class></string>
    <string name=":1685">---</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="">返回值：;; 布尔值，表示表中是否存在键等于 `k` 的元素。\n注意：;; 仅当 `Hash::is_transparent` 和 `Pred::is_transparent` 是有效的成员类型别名时，`template<class k="">` 重载版本才参与重载决议。库假定 `Hash` 可同时接受 `K` 类型与 `Key` 类型作为参数，且 `Pred` 是透明的。这支持异构查找，从而避免实例化 `Key` 类型对象带来的性能开销。\n在存在并发插入操作的情况下，返回的值可能无法精确反映执行后容器的真实状态。</class></string>
    <string name=":1701">---</string>
    <string name="">桶接口</string>
    <string name="">bucket_count</string>
    <string name="">```c++ size_type bucket_count() const noexcept; ```</string>
    <string name="">返回值：;; 桶数组的大小。</string>
    <string name=":1712">---</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=":1724">---</string>
    <string name="">max_load_factor（最大负载因子）</string>
    <string name="">```c++ float max_load_factor() const noexcept; ```</string>
    <string name="">返回值：;; 容器的最大负载因子。</string>
    <string name=":1735">---</string>
    <string name="">设置最大负载因子</string>
    <string name="">```c++ void max_load_factor(float z); ```</string>
    <string name="">效果：;; 不执行任何操作，因为不允许用户修改此参数。保留该函数是为了与 `boost::unordered_map` 保持兼容。</string>
    <string name=":1745">---</string>
    <string name="">max_load（最大负载）</string>
    <string name="">```c++ size_type max_load() const noexcept; ```</string>
    <string name="">返回值：;; 表在不进行重哈希的情况下可容纳的最大元素数量（假设不会再删除任何元素）。\n注意：;; 构造、重哈希或清空后，表的最大装载量至少为 `max_load_factor() * bucket_count()`。在高负载条件下执行删除操作时，该数值可能会降低。\n在存在并发插入操作的情况下，返回的值可能无法精确反映执行后容器的真实状态。</string>
    <string name=":1762">---</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="">抛出异常：;; 若抛出异常，函数不会产生任何效果（由容器的哈希函数或比较函数抛出的异常除外）。\n并发特性：;; 阻塞当前容器 `*this`。</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="">抛出异常：;; 若抛出异常，函数不会产生任何效果（由容器的哈希函数或比较函数抛出的异常除外）。\n并发特性：;; 阻塞当前容器 `*this`。</string>
    <string name=":1791">---</string>
    <string name="">统计信息</string>
    <string name="">get_stats</string>
    <string name="">```c++ stats get_stats() const; ```</string>
    <string name="">返回值：;; 表截至目前执行的插入和查找操作的统计信息描述。\n注意：;; 仅当启用了**统计信息计算**功能时可用。</string>
    <string name=":1804">---</string>
    <string name="">reset_stats</string>
    <string name="">```c++ void reset_stats() noexcept; ```</string>
    <string name="">效果：;; 将容器维护的内部统计数据归零。\n注意：;; 仅当 xref:reference/stats.adoc#stats[statistics calculation] 被 xref:concurrent_node_map_boost_unordered_enable_stats[enabled] 启用时可用。</string>
    <string name=":1815">---</string>
    <string name="">推导指引</string>
    <string name="">如果以下任何一条件为真，则推导指引将不参与重载决议：</string>
    <string name="">- 该推导指引包含 `InputIterator` 模板参数，且为此参数推导出的类型不符合输入迭代器的要求。 - 该推导指引包含 `Allocator` 模板参数，且为该参数推导出的类型不符合分配器要求。 - 该推导指引包含 `Hash` 模板参数，且为该参数推导出的类型为整型或符合分配器要求。 - 该推导指引包含 `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 concurrent_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, const concurrent_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=":1874">并发特性：;; 阻塞 `x` 与 `y`。\n注意：;; 若两个表的相等性谓词不一致，行为未定义。</string>
    <string name=":1877">---</string>
    <string name="">operator!</string>
    <string name="">```c++ template&lt;class key,=\"\" class=\"\" t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt; bool operator!=(const concurrent_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, const concurrent_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=":1889">并发特性：;; 阻塞 `x` 和 `y`。\n注意：;; 若两个表的相等性谓词不兼容，行为未定义。</string>
    <string name=":1892">---</string>
    <string name="">交换</string>
    <string name="">```c++ template&lt;class key,=\"\" class=\"\" t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt; void swap(concurrent_node_map&lt;key, t,=\"\" hash,=\"\" pred,=\"\" alloc=\"\"&gt;&amp;amp; x, concurrent_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=":1902">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name=":1908">---</string>
    <string name=":1910">erase_if</string>
    <string name="">```c++ template&lt;class k,=\"\" class=\"\" t,=\"\" h,=\"\" p,=\"\" a,=\"\" predicate=\"\"&gt; typename concurrent_node_map&lt;k, t,=\"\" h,=\"\" p,=\"\" a=\"\"&gt;::size_type erase_if(concurrent_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=":1917">等价于 [listing,subs=\"+macros,+quotes\"]</string>
    <string name="">序列化</string>
    <string name="">`concurrent++_++node++_++map` 可通过本库提供的 API，借助 link:../../../../../serialization/index.html[Boost.Serialization] 实现归档/检索功能。同时支持常规格式与 XML 格式的归档文件。</string>
    <string name="">将 concurrent++_++node++_++map 保存至归档</string>
    <string name="">将 `concurrent++_++node++_++map` 容器 `x` 中的所有元素保存至归档（XML 格式归档） `ar` 中。</string>
    <string name="">要求;; `std::remove++_++const++&lt;++key++_++type++&gt;++::type` 和 `std::remove++_++const++&lt;++mapped++_++type++&gt;++::type` 必须满足可序列化要求（XML 可序列化），且需要支持 Boost.Serialization 的 `save++_++construct++_++data` / `load++_++construct++_++data` 协议（该协议自动支持 https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[可默认构造] 要求）。 并发性;; 阻塞于 `x` 。</string>
    <string name=":1941">---</string>
    <string name="">从归档加载 concurrent++_++node++_++map</string>
    <string name="">删除 `concurrent++_++node++_++map` 容器 `x` 中的所有现有元素，并从归档（XML 归档） `ar` 插入原始 `concurrent++_++node++_++map` 容器 `other` 的元素副本，这些副本保存在 `ar` 读取的存储中。</string>
    <string name="">要求;; `x.key++_++equal()` 需要在功能上等价于 `other.key++_++equal()` 。 并发性;; 阻塞于 `x` 。</string>
</resources>
