C ++中STL :: MAP的内部实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++中STL :: MAP的内部实现相关的知识,希望对你有一定的参考价值。

我想知道,C ++中的MAP如何使用,不是MultiMap只是内部实现的简单Map。

我最能想到的是:

对于Integer映射:A Balanced Binary Search Tree could be used .

对于String映射:Compressed Trie or something similar could be used .

我真的很好奇,如何在STL Map中真正实现它。是某种哈希函数还是与此完全不同的东西。

答案

[ordered容器,包括std::map,被实现为平衡的二叉树(通常是RB树,但任何其他平衡的树都符合要求)。

对于此类问题,您需要的最重要的信息是容器中每个操作的复杂性要求,这是标准要求的。也就是说,最重要的答案就是,只要满足复杂性要求,实际的实现就没有关系。

另一答案

c ++中的std :: map使用Red-Black Tree实现。

[内部,类'map'公开继承了'__Tree'类,该类提供了Red-Black Tree的实现。See this snipped of 'class map' from <map.h>

此__Tree类用于map / multimap / set / multiset。See this snippet from 'class __Tree' from <xtree.h>

以上是关于C ++中STL :: MAP的内部实现的主要内容,如果未能解决你的问题,请参考以下文章

C++/STL8. pair

用C语言编写DLL

STL 的 hash_map 中的碰撞检测

[C++ STL] map使用详解

lua 如何实现 C++ 里的 map

Java创建不能被修改的Map