【问题标题】:C++ augmenting an STL data structureC++ 扩充 STL 数据结构
【发布时间】:2014-02-08 14:11:51
【问题描述】:

我的要求是能够快速检索树中的最小值和最大值。 (注意,不是最小/最大键,而是卫星数据的最小/最大键)。

树将基于字符串作为键,每个节点将存储一个整数。这个整数必然会改变并不断更新。键保持固定

我正在考虑使用here 描述的方法来增加一棵红黑树,以便每个节点都存储与最小值相似的最大值(左侧最大值和右侧最大值的最大值及其自身)。

所以当我更新一个节点时,我会简单地更新每个节点的最小值/最大值,这些节点被遍历到我的当前节点。

避免重写红/黑树的 STL 实现的最佳方法是什么。

【问题讨论】:

  • boost多索引容器?
  • @Yakk 感谢您的建议。会完成这项工作,但似乎有点矫枉过正,因为我不需要对二级索引进行排序,我只需要跟踪最小/最大排序就像最小/最大堆
  • "你不能总是得到你想要的。你不能总是得到你想要的。但是如果你尝试几次,你就会得到你需要的。"作为替代方案,您可以编写自己的多索引来增加 boost 添加仅支持最小/最大元素(优先级队列?)的索引,但这需要大量工作,您真的在乎吗?

标签: c++ data-structures stl tree red-black-tree


【解决方案1】:

您不能使用 STL 容器(例如 set,据我所知,从技术上讲,它甚至不需要 BST),因为它无法让您访问底层结构。

您的选择是:

  • 正如您已经提到的,编写自己的 BST。

  • 只需使用按整数值排序的辅助 BST(或堆)。

  • 使用 Boost 的multi_index_container

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2011-01-03
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多