Multimaps通常实现为二叉搜索树。
但他们的典型的内部表示是什么?
是std::map<Key, std::list<Value> >
还是类似?
我担心的是使用相同的密钥插入和迭代一组元素的复杂性。
答案 0 :(得分:1)
如果您想了解特定操作的复杂性,您只需要看标准。该标准保证了复杂性,但实现可以任意方式自由地满足这些保证。
对于插入,复杂度为O(lg n)
,除非您每次都指定最佳提示,在这种情况下,复杂性为O(1)
摊销。 (详见此处:http://en.cppreference.com/w/cpp/container/multimap/insert)
对于具有相同键的一组元素的迭代,复杂性与从任何迭代器到另一个迭代器的迭代相同。鉴于您已经找到了迭代器,迭代在您迭代的项目数中是线性的。 (抱歉,目前无法找到此参考资料)