【问题标题】:What is a Node Handle?什么是节点句柄?
【发布时间】:2016-12-07 11:08:06
【问题描述】:

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

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

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

【问题讨论】:

标签: c++ c++17


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    节点句柄的概念是指地图或集合的“节点”,它与地图本身无关。

    其目的是能够将项目从一个映射移动到另一个映射,而不会调用任何复制或移动键或数据的开销。

    这里有一个例子:

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

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 2010-12-17
      • 1970-01-01
      • 2011-11-25
      • 2011-07-23
      • 2010-10-22
      • 2018-07-19
      相关资源
      最近更新 更多