c++ - 使用 hashmaps c++ 查找最常用的词

标签 c++ hashmap find-occurrences

我需要找到最常出现的单词并返回该值。我必须使用散列映射,并且该函数需要一个文件名。这是我到目前为止所做的,但我很困惑。

  int most_frequent_word(string filename)
  {
  string words;
  ifstream in(filename.c_str());
  unordered_map<string, int> word_map;
  while(in >> words)
  {

    for(int i = 0; i < 100; i++)
    {
        word_map[words[i]]++;
    }
   }
  return words;
  }

任何帮助将不胜感激。谢谢!

最佳答案

您的代码中有几个问题可能会导致它无法按预期工作。

首先是 for i 循环。你为什么需要taht循环?就这样吧,你需要数单词。

while(in >> words)
{
    word_map[words]++;
}

words 重命名为 word,实际上你正在阅读这里的一个单词 in >> words

第三个是返回语句。当声明函数返回 int 时,您不能返回 string

但是目前还没有什么可以返回的,因为到目前为止我们只知道每个单词出现的次数。运行一个循环以找到最大值。

int result = 0;
for(unordered_map<string, int>::iterator it = word_map.begin(); it != word_map.end(); it++)
    result = max(result, it->second);
return result;

此处 word_map 由成对的单词及其出现次数组成。我们需要遍历所有这些对以寻找最大出现次数。为此,我们使用迭代器 it

关于c++ - 使用 hashmaps c++ 查找最常用的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36107895/

相关文章:

c++ - 二进制比较以证明客户端正在使用我们的 C++/CLI 库

c++ - Google Test 中调用的基本方法

java - 当我尝试重新定义变量时,出现索引越界错误

r - 计算向量索引的出现次数

不同列表中两个项目的Python共现

c++ - 使用自定义 DirectShow 过滤器(DLL,已注册)

java - 确定哈希表平均链长

python - 在 Python 中进行模糊键查找的最佳方法?

mysql - 基于可用性的查询的 SQL 连续出现

c++ - 命名空间 boost::detail 中没有名为 'dynamic_cast_tag' 的成员 (SALOME 7.3.0)