c++中multimap的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中multimap的问题相关的知识,希望对你有一定的参考价值。

假设multimap是按less<int>排序
用insert不断插入pair
比如:本来map 里有(1,1)
insert一个(1,2)
新插进去的pair 是放在哪
是(1,1)(1,2)还是(1,2)(1,1)

参考技术A //multimap声明
template<
    class Key,
    class T,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<std::pair<const Key, T> >
> class multimap;

Compare = std::less<Key>,less是一个struct,可能的实现:

constexpr bool operator()(const T &lhs, const T &rhs) const 
    return lhs < rhs;

一般来说,比较时会接受自身为第一个参数,所以less是从小往大排序,greater是从大往小排序。

stl的代码是可以看见的,你可以去IDE里查看。

注:以上涉及代码摘自cppreference.com

参考技术B C++11标准开始,key相等的元素按插入顺序排列,所以是(1,1) (1,2)
C++11之前没有规定,所以都有可能。本回答被提问者采纳

以上是关于c++中multimap的问题的主要内容,如果未能解决你的问题,请参考以下文章

c++中mapmultimapunordered_mapunordered_multimap的区别

如何在 C++ 中在 int 和 pair 之间制作 unordered_multimap?

我该如何处理这个 C++ Multimap 问题?

c++ 为啥 std::multimap 比 std::priority_queue 慢

C++ multimap 查找指定的元素

C++ STL|深入理解关联容器multimap和map及其查找操作