将std :: map内部存储为红黑树

时间:2017-07-30 10:46:31

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

在此map示例中:

std::map<int, int> m; 
for (int i = 0; i < 1000; i++) 
    m[2*i] = i;
for (i = 0; i < 1000; i++)   // just an example of filling a map
    m[2*i + 1] = i;

如何知道内部&#34;红黑树&#34;会是什么样子?

哪些节点将是其他节点的子节点?

在这样一个简单的例子中理解这个(视觉上),可以让我更好地掌握红黑树地图的实现方式。

我阅读了很多答案,例如Why is std::map implemented as a red-black tree?关于std::map作为红黑树的实施,但它没有帮助。我还阅读了Red–black tree,但是,在地图的情况下,一个简单的例子将有助于理解它是如何工作的。

1 个答案:

答案 0 :(得分:1)

如果不深入了解供应商std::map实施的内部结构,您无法知道。例如,在供应商make std::map<int上使用尝试而不是红黑树。

该标准允许多种不同的选择,供应商不同意某些单一的最佳选择。