什么是节点句柄(Node Handle)?

8

在对 cppreference.com 进行随机文档检查时,我注意到一些容器的新成员函数重载将一个称为 Node Handle 的新标准类型作为参数。

现在,同一网站上的节点句柄文档页面 提供了关于其工作方式的多个细节和技术行为,但它并没有很好地传达这种新类型的总体思想和目的。

因此,问题来了,什么是 Node Handle?


1
相关 - https://dev59.com/g1kS5IYBdhLWcg3w05aT - Praetorian
2个回答

7
基于Node的容器有望支持轻松提取和合并。只需将内部节点从集合A中取消链接,并将它们放入集合B中,就可以完成此操作。这与将键和值从容器中移出不同,因为我们不会留下需要清理的“空”节点,也不会在已经有完全可用的节点时分配新节点。
为了方便使用这些容器的新API,标准需要一种让客户程序员获取这些节点的方式,而不会破坏封装性。因此产生了handle。

5

节点处理的概念是指引用地图或集合中与地图本身分离的“节点”。

它的目的是能够将项目从一个地图移动到另一个地图,而不会引发任何复制或移动键或数据的开销。

这里有一个例子:

http://en.cppreference.com/w/cpp/container/map/extract


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接