2016-12-07 1088 views
3

cppreference.com的随机文件检查过程中,我注意到一些容器的新成员函数重载,其中C++17的新标准类型称为Node Handle什么是节点句柄?

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

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

+1

相关 - https://stackoverflow.com/q/39423059/241631 – Praetorian

回答

3

节点句柄的思想是指地图或集合中与地图本身无关的“节点”。

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

这里的一个例子:基于

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

4

节点容器必须支持简单的提取和合并的可能性。这与将内部节点与集合A断开并将它们放置到集合B中一样简单。这与将Key和Values移出容器不同,因为我们不会留下需要清理的“空”节点,当我们已经有一个完美的节点可以移动时,我们也不会分配一个新的节点。

为了方便这个new API for the containers该标准需要一种方法让客户程序员在不破坏封装的情况下掌握这些节点。因此,手柄。