21xrx.com
2024-11-22 08:08:51 Friday
登录
文章检索 我的文章 写文章
C++ Map排序
2023-07-05 01:07:32 深夜i     --     --
C++ STL Map Sort Map using a Comparator Map sorting by key or value Multi-map sorting Map sorting us

C++中的Map是一种常用的容器,Map内的元素是按照键值(key)进行排序的。但是,有时候我们需要根据Map的值(value)进行排序。

实现Map值排序的方法有很多种。其中一种方法是使用自定义比较函数。我们可以定义一个函数,用来比较Map的值大小。例如,我们可以定义一个从小到大排序的函数:


bool cmp(const pair<int, int>& a, const pair<int, int>& b)

  return a.second < b.second;

其中pair是C++中的STL容器,用来保存两个元素,这里第一个元素是键值,第二个元素是Map的值。在cmp函数中,我们比较了两个pair的第二个元素,如果a的第二个元素小于b的第二个元素,那么a就排在b的前面。

接着,我们可以使用STL中的sort函数来对Map的值进行排序,代码如下:


map<int, int> m;

... // Map中添加元素

vector<pair<int, int>> v(m.begin(), m.end());

sort(v.begin(), v.end(), cmp);

for(auto& p : v)

  cout << p.first << " " << p.second << endl;

在上述代码中,我们将Map中所有元素的键值和值保存到一个vector 中,并使用sort函数将vector中的元素按照cmp函数中定义的规则排序。最后,我们可以遍历排好序的vector,输出键值和对应的Map值即可。

总结起来,C++中的Map排序有多种方法,其中最常用的方法是自定义比较函数,通过比较Map的值大小来排序。需要注意的是,Map中的元素默认是按照键值排序的,所以在进行值排序时,需要将Map元素的键值和值保存到一个pair中,并在进行排序操作时,对pair的第二个元素进行比较。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复