这是对我正在做的事情的非常抽象的解释:
假设我有一个文本文件,里面全是用换行符分隔的数字。现在,我将这些数字放入 map<int, int>
中,其中键是数字,值是频率。
我的最终目标是按频率排序的数字列表。我该怎么做呢?请注意,一个频率显然可以出现不止一次。我当时的想法是制作一个 struct
包含数字及其频率,并定义 <
这样它就永远不会返回平等。然后我会遍历映射,将所有元素放入该结构,然后放入一个集合。
最佳答案
建立频率图后,将其对复制到 std::vector<std::pair<int, int> >
然后std::sort
后者与 std::sort
的 3-args 版本,它将比较器作为第三个参数;作为比较器,您可以使用比较 .second
的比较器首先是对的字段,然后是 .first
那些(如果你想要的话)只是为了消除 .second
的对的顺序的歧义。字段是相等的(但我认为您真的不需要最后一位,因为您不关心频率相同的情况的顺序,对吗?)。
关于c++ - 如何找到输入中最常见的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642840/