我已经习惯了现有的界面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(使用前将#替换为@)