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的内部实现的主要内容,如果未能解决你的问题,请参考以下文章