何时将 node_type 与 std::map::insert 一起使用?

2023-11-23

我已经习惯了现有的界面std::map.
插入元素返回一个 bool 描述成功插入,
以及迭代器关于插入元素的位置。

template< class P >
std::pair<iterator,bool> insert( P&& value ); //(since C++11)

C++17 添加了看起来类似的调用,但类型名称不同:

insert_return_type insert(node_type&& nh);   //(since C++17)

我尝试查找什么node_type是,但主要是未指定的:

template</*unspecified*/>
class /*unspecified*/

为什么在 C++17 中添加此函数?什么时候我会在旧调用上使用它?


这不仅仅是std::map,类似的功能已添加到所有关联和无序关联容器中。它们在标准中进行了解释[容器.节点]/1

A 节点句柄是一个对象,它接受来自关联容器(23.2.4)或无序关联容器(23.2.5)的单个元素的所有权。它可用于将该所有权转移到另一个容器 具有兼容的节点。具有兼容节点的容器具有相同的节点句柄类型。 ...

上一节后面的表格显示了具有兼容节点的容器。

节点句柄接口允许您将元素(节点)从一个容器传输到另一个(兼容)容器,而无需复制/移动元素。相反,容器维护的各个内部节点作为一个整体进行传输。

当处理包含不可复制、不可移动类型的容器时,这是必要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时将 node_type 与 std::map::insert 一起使用? 的相关文章

随机推荐