c++ - 如何找到输入中最常见的数字?

标签 c++

这是对我正在做的事情的非常抽象的解释:

假设我有一个文本文件,里面全是用换行符分隔的数字。现在,我将这些数字放入 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/

相关文章:

c++ - 作为非类型模板参数的类模板实例的语法

c++ - python <=> c++ 跨语言哈希

c++ - 读取文件,损坏的数据

c++ - double 的重载比较以允许数值错误

c++ - 自动释放数组?

c++ - 为什么在调用这个列表时需要 "&"?

c++ - 打印名称、类型和注册表数据

c++ - Visual Studio 速成版 2013 : How to create project with existing C++ source files ?

c++ - C++ 中的宏/定义区分大小写吗?

c++ - 如何使用 C++ 智能指针?