我想知道,C ++中的MAP
如何,而不是MultiMap 只是简单的Map,在内部实现。
我最能想到的是:
对于整数映射:A Balanced Binary Search Tree could be used .
对于字符串映射:Compressed Trie or something similar could be used .
我真的很好奇,它是如何在STL Map中真正实现的。是否使用了一些散列函数,或者它是否与此完全不同。
答案 0 :(得分:6)
有序容器(包括std::map
)实现为平衡二叉树(通常是RB树,但任何其他平衡树都符合要求)。
对于这类问题,您需要的最重要的信息是容器中每个操作的复杂性要求,这是标准要求的。这也是最重要的答案,也就是说,只要满足复杂性要求,实际的实施并不重要。
答案 1 :(得分:3)
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>