【问题标题】:STL Map where is _Rb_tree_insert_and_rebalance implemented?STL Map _Rb_tree_insert_and_rebalance 在哪里实现?
【发布时间】:2013-05-27 01:26:32
【问题描述】:

我正在研究如何实现 STL std::map。我知道它是使用红黑树实现的。所以,我只是想知道红黑树是如何在 STL 中实现的,因为我想知道实现的效率如何。

std::map 包括stl_tree.h。这是实现红黑树的地方。

所有函数(插入发生的地方)抽象插入并调用_Rb_tree_insert_and_rebalance 函数。但是我找不到这个的实现。

有什么想法在哪里实施?

【问题讨论】:

  • 如果 STL 指的是 C++ 标准库(如 std 命名空间所建议的那样),那么它完全取决于实现。所以你应该澄清你的意思是哪个标准库实现。如果您真的指的是 STL,那么其中没有 std::map(只有 map)。

标签: c++ map red-black-tree


【解决方案1】:

它完全是特定于实现的,但是,我认为您的意思是libstdc++,因此,由于实现是开源的 - 您可以在源文件中搜索此功能。在gcc-4.8 中,此函数位于文件libstdc++-v3/src/c++98/tree.cc 中。 例如你可以在这里搜索:github gcc sources

【讨论】:

  • 谢谢。我正在查看安装目录中可用的 gcc 包含,但找不到。
  • 只是一个挑剔的注释:正式地,它不是实现定义的,因为语言定义说“实现定义”意味着符合要求的实现必须记录它的作用。但是,它是特定于实现的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 2019-10-14
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多