【发布时间】:2018-06-09 15:09:36
【问题描述】:
我正在尝试解决这个问题:
如果 2 个数字具有相同的频率,则以递减的频率打印数组的元素,然后打印第一个出现的数字。 (https://www.geeksforgeeks.org/sort-elements-by-frequency/)
我正在尝试自己实施解决方案。我曾想过创建以下数据结构:
map<int,pair<int,int>> mymap
我将数字本身存储在第一个int 中,并将数字的索引和计数存储在上图中的数组对中。
我想编写一个自定义比较器来对对进行排序,如下所示:
bool cmp(pair<int,int>&a, pair<int,int>&b)
{
if (a.first == b.first)
return a < b;
else
return a > b;
}
我仍在学习编写自定义比较器。我无法绕过我的头,我怎样才能通过比较器对地图进行排序。另外,如果pairs是排序的,那么map中的key会被排序吗?
请告诉我!谢谢!
【问题讨论】:
-
虽然自己做这个排序是一个很好的练习,但一旦你完成了它并了解了它,就把它扔掉并改用
std::stable_sort。 :)