std :: multimap如何存储其元素?

时间:2013-01-29 10:38:33

标签: c++ stl

  

可能重复:
  How is a C++ multimap implemented?

C++ reference mentions

  

Multimaps通常实现为二叉搜索树。

但他们的典型的内部表示是什么? 是std::map<Key, std::list<Value> >还是类似? 我担心的是使用相同的密钥插入和迭代一组元素的复杂性。

1 个答案:

答案 0 :(得分:1)

如果您想了解特定操作的复杂性,您只需要看标准。该标准保证了复杂性,但实现可以任意方式自由地满足这些保证。

对于插入,复杂度为O(lg n),除非您每次都指定最佳提示,在这种情况下,复杂性为O(1)摊销。 (详见此处:http://en.cppreference.com/w/cpp/container/multimap/insert

对于具有相同键的一组元素的迭代,复杂性与从任何迭代器到另一个迭代器的迭代相同。鉴于您已经找到了迭代器,迭代在您迭代的项目数中是线性的。 (抱歉,目前无法找到此参考资料)