我想知道是否有人可以建议一种方式,可以存储单词的整个段落并统计每个单词的出现频率,然后按出现频率从高到低的顺序对单词进行排序。 我认为这可以使用二维数组以及可能用于保存计数的结构来完成,但是我无法完全确定执行此操作的确切方法。 我目前在DevC ++上编码。

===============>>#1 票数:0

我建议使用将std::string映射到intstd::map int是计数, string是键。 这将是建立计数列表的简便方法。 从那里可以很容易地将您的清单从最小到最大。 您可以从地图条目中配对,然后将它们放入向量中,然后将向量按计数排序。 可能有一些更好的方法可以在最后获得排序的计数,但这是最初想到的。

===============>>#2 票数:0

基本上,要计算单词频率,您需要两个数据结构。

第一个是map (您可以使用std::map<std::string, int> ,但是如果可以使用C ++ 11,我建议您使用std::unordered_map<std::string, int> 。您收集单词并计算每个单词的出现次数。

在处理完所有单词之后,您可以使用std::priority_queue<std::pair<std::string, int> >并将来自地图的所有单词放入此队列中。 使用自定义比较器比较发生次数:

 typedef std::pair<std::string, int> Element;
 struct LessOccur {
     bool operator<(const Element& _lhs, const Element& _rhs) {
         return _lhs.second < _rhs.second;
     }
 };
 std::priority_queue<Element, std::vector<Element>, LessOccur> pq;
 for(auto it: wordMap)
     pq.push(*it);

而已。

  ask by user3553067 translate from so

未解决问题?本站智能推荐:

1回复

计算段落中出现次数最多的单词

今天,我的代码遇到了一些问题。 请求是读取一个包含 “今天是星期天。明天是星期一。昨天是星期六。” 并计算句子中单词的数量,段落中句子的数量,找到段落中出现次数最多的单词,然后写入文件。 我已经完成了前两个请求,但是最后一个,当我运行代码时,它来了: “星期一”,
5回复

编写一个程序来计算每个单词在其输入中出现的次数

这是加速C ++中的一个问题(3-3)。 我是C ++的新手。 我已经考虑了很长时间,但是我无法弄清楚。 谁能为我解决这个问题? 请详细解释一下,您知道我不太擅长编程。 告诉我您使用的变量的含义。
2回复

计算每个单词在输入中出现的次数

我正在从Accelerated C ++进行练习: 编写一个程序,计算每个单词在其输入中出现的次数。 这是我的代码: 如果编译并运行该程序,您将看到: 我输入如下: 然后显示: 我的预期结果是: 我不想使用地图,因为我还没有学过。
4回复

计算文件中每个单词出现的次数

嗨,我正在编写一个程序,该程序计算每个单词在文件中出现的次数。 然后,它会打印一个计数在800到1000之间的单词列表,按计数顺序排序。 我坚持要保持计数器,以查看第一个单词是否与下一个单词匹配,直到出现新单词为止。 我主要尝试打开文件,逐个单词读取每个单词,然后在while循环中调用so
3回复

计算文本文件中每个单词的出现次数

给定一个具有多个字符串的大型文本文件,在C ++中读取文本文件并计算每个单词有多少次出现的最有效方法是什么? 文本文件的大小未知,所以我不能只使用简单的数组。 此外,还有另一个问题。 该文本文件的每一行都以类别关键字开头,随后的单词是该类别的功能。 我需要能够计算出该类别中每个单词的出现
2回复

读取多个文本文件并计算一个单词的出现次数?

我应该从具有多个(21578)文本文件的文件夹中读取(扫描)数据,并且文件名从1到21578编号,并读取文本文件中出现的每个单词,并计算它出现的次数。整个文件夹,即; 在所有文件中我该怎么做? 请帮助。
2回复

如何使用C ++ Pgm中的指针在一次迭代中查找字符串段落中单词出现的次数?

假设我有以下一段字符串。 “录像带暗示哥斯达黎加康科迪亚号船上的船员在撞到岩石后与意大利官员的通讯中仅提及“停电”。录像带暗示哥斯达黎加康科迪亚号船上的船员在与意大利官员的通讯中仅提及“停电”。击中石头。” 现在,我必须编写一个C ++ pgm,它可以单遍历地给出输出,例如A 2 tap
3回复

使用map计算文件中每个单词出现的次数。 (C ++)

我的主要问题是,当一个单词出现不止一次时,列出的单词也多于一次。 例如,如果文本以“ hello hello”开头,则cout会生成:“ hello:2”'\\ n'“ hello:2” 此外,我不想不必关闭,然后再次打开文件第二次才是正确的。 从最后一次while循环开始,它似乎仍
2回复

计算每个单词在其输入C ++中出现的次数

问题是即使出现两次,它也会为每个单词打印1。 可能是什么问题呢? 我不确定迭代器不为空的测试是否正确。
2回复

计算向量中单词的出现次数

假设我有一个带有以下内容的std::vector<std::string> 现在我想计算向量中每个单词出现的次数。 我的第一个想法是使用以下算法,这是粗略的。 我想知道是否有更好的方法。