什么是节点句柄?

Dra*_*rax 7 c++ c++17

在随机文档检查期间,cppreference.com我注意到一些容器的新成员函数重载作为参数,恰好是一个新的标准类型,C++17称为a Node Handle.

现在,同一站点上的节点句柄的文档页面提供了有关如何工作的多个细节和技术行为,但它并没有真正正确地传达这种新类型的一般概念和目的.

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

Sto*_*ica 6

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

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


Ric*_*ges 5

节点句柄的概念是指从地图本身脱离的地图或集合的"节点".

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

这里的一个例子:

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