使用不同数据结构实现 std::set
Posted
技术标签:
【中文标题】使用不同数据结构实现 std::set【英文标题】:Implementation of std::set using different data structures 【发布时间】:2019-09-23 08:56:23 【问题描述】:受这个问题的启发:Why isn't std::set just called std::binary_tree? 我想出了自己的一个。红黑树是唯一可能满足std::set
的数据结构要求还是有其他要求?例如,另一个自平衡树 - AVL tree - 似乎是具有非常相似属性的好选择。理论上是否可以替换std::set
的底层数据结构,还是有一组要求使红黑树成为唯一可行的选择?
【问题讨论】:
AVL 树在大多数现实世界的情况下比 RB 树的性能更差(不要与渐近复杂性混淆)。您可以使用 AVL 树并保持合规,但它不会为您赢得任何客户。 【参考方案1】:在大多数现实世界的情况下,AVL 树的性能(不要与渐近复杂性混淆)比 RB 树更差。您可以将std::set
基于 AVL 树并完全符合标准,但它不会为您赢得任何客户。
【讨论】:
以上是关于使用不同数据结构实现 std::set的主要内容,如果未能解决你的问题,请参考以下文章