gpt4 book ai didi

c++ - 什么时候将 node_type 与 std::map::insert 一起使用?

转载 作者:可可西里 更新时间:2023-11-01 15:51:59 27 4
gpt4 key购买 nike

我已经习惯了std::map的现有接口(interface)。
插入元素返回一个描述插入成功的 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,所有关联和无序的关联容器都添加了类似的功能。它们在 [container.node]/1 中的标准中进行了解释

A node handle is an object that accepts ownership of a single element from an associative container (23.2.4) or an unordered associative container (23.2.5). It may be used to transfer that ownership to another container with compatible nodes. Containers with compatible nodes have the same node handle type. ...

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

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

在处理包含不可复制、不可移动类型的容器时,这变得很有必要。

关于c++ - 什么时候将 node_type 与 std::map::insert 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39423059/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com