在对cppreference.com
进行随机文档检查期间,我注意到某些容器的新成员函数重载作为参数,恰好是来自C++17
的新标准类型,称为Node Handle
。< / p>
现在the documentation page of node handles on the same site提供了有关如何工作的多个细节和技术行为,但它并没有真正正确地传达这种新类型的总体思路和目的。
因此,问题是什么是节点句柄?
答案 0 :(得分:6)
基于节点的容器有可能支持轻松提取和合并。它就像从集合A取消链接内部节点并将它们放入集合B一样简单。这与将容器和值移出容器不同,因为我们没有留下需要清理的“空”节点,当我们已经拥有一个可以自行移动的非常好的节点时,我们也不会分配一个新节点。
为了促进这个new API for the containers,标准需要一种方法让客户端程序员能够掌握这些节点,而不会破坏封装。因此手柄。
答案 1 :(得分:5)
节点句柄的概念是指从地图本身脱离的地图或集合的“节点”。
其目的是能够将项目从一个地图移动到另一个地图,而无需调用复制或移动密钥或数据的任何开销。
这里有一个例子: