gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:09:51 24 4
gpt4 key购买 nike

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

  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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com