【问题标题】:I am using red-black tree as a data structure. Is it better than std::unordered_map?我使用红黑树作为数据结构。它比 std::unordered_map 好吗?
【发布时间】:2015-01-19 07:43:16
【问题描述】:

我想通过用任何其他数据结构替换红黑树来提高我的代码性能。我在内存中拥有这棵红黑树,而不是在磁盘上。您能否推荐其他在搜索、插入和删除方面比红黑树更快的选项?

【问题讨论】:

  • 哪个“更好”在很大程度上取决于您的用例。
  • 可以选择排序的 std::vector 或 boost.org/doc/libs/1_57_0/doc/html/container/…
  • 你的元素有多大?你有多少?您需要多久搜索/插入一次。您需要订购您的数据吗?您当前的 tje rb 树实现来自哪里
  • 元素数量很多,超过一个 lac。搜索和插入非常频繁。排序是有的,不过暂时可以忽略。
  • 我还建议观看 Chandler Carruth “算法的效率,数据结构的性能”(youtube.com/watch?v=fHNmRkzxHWs)

标签: c++ stl tree


【解决方案1】:

你用 RB 树做什么?如果您需要存储的对象遵守排序标准,那么您的 RB 树可能是更好的选择。但是,我建议使用使用平衡 BST std::mapstd::set 实现的 STL 容器。

如果您不关心对象排序,请使用 HashTable。 C++11 引入了 std::unordered_mapstd::unordered_set,它们的平均插入和查找时间是恒定的。

【讨论】:

  • 如果排序不重要,哈希表是否比 rb 树快? Hast 表没有用于搜索的内置 b-tree 结构吗?我可以使用 B-tree 而不是使用 rb-tree 来获得性能吗?
  • HashTable 与任何类型的树都没有任何关系。它是另一种数据结构。
猜你喜欢
  • 2011-01-31
  • 2012-06-03
  • 2019-02-25
  • 2018-01-06
  • 1970-01-01
  • 2011-02-04
  • 2017-07-24
  • 2020-11-06
  • 2013-02-01
相关资源
最近更新 更多