什么是节点句柄?

时间:2016-12-07 11:08:06

标签: c++ c++17

在对cppreference.com进行随机文档检查期间,我注意到某些容器的新成员函数重载作为参数,恰好是来自C++17的新标准类型,称为Node Handle。< / p>

现在the documentation page of node handles on the same site提供了有关如何工作的多个细节和技术行为,但它并没有真正正确地传达这种新类型的总体思路和目的。

因此,问题是什么是节点句柄?

2 个答案:

答案 0 :(得分:6)

基于节点的容器有可能支持轻松提取和合并。它就像从集合A取消链接内部节点并将它们放入集合B一样简单。这与将容器和值移出容器不同,因为我们没有留下需要清理的“空”节点,当我们已经拥有一个可以自行移动的非常好的节点时,我们也不会分配一个新节点。

为了促进这个new API for the containers,标准需要一种方法让客户端程序员能够掌握这些节点,而不会破坏封装。因此手柄。

答案 1 :(得分:5)

节点句柄的概念是指从地图本身脱离的地图或集合的“节点”。

其目的是能够将项目从一个地图移动到另一个地图,而无需调用复制或移动密钥或数据的任何开销。

这里有一个例子:

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