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

问题描述 投票:4回答:2

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

我最能想到的是:

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

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

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

c++ algorithm map stl implementation
2个回答
6
投票

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

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


0
投票

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>

© www.soinside.com 2019 - 2024. All rights reserved.