使用 hashmaps c++ 查找最常用的词
Find the most frequently word using hashmaps c++
我需要找到最常出现的单词和 return 该值。我必须使用散列映射,并且该函数需要一个文件名。这是我到目前为止所做的,但我很困惑。
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(int i = 0; i < 100; i++)
{
word_map[words[i]]++;
}
你在这里做什么? 100从哪里来?为什么你关心单词的单个字母(words[i]
让你如此)?
如果我正确理解你的任务,难道还不够吗
++word_map[words];
代替?
还有你为什么returnwords
?它是一个字符串,您的函数应该 return 和 int。相反,找到地图中的最大值即可。
您的代码中有几个问题可能会导致它无法按预期工作。
首先是 for i
循环。你为什么需要taht循环?就这样吧,你要数字数
while(in >> words)
{
word_map[words]++;
}
将words
重命名为word
,实际上你在这里读了一个字in >> words
。
第三个是return语句。当声明函数 returns int
.
时,您不能 return string
但是 return 还没有什么,因为到目前为止我们只知道每个单词出现的次数。 运行 寻找最大值的循环。
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
.
我需要找到最常出现的单词和 return 该值。我必须使用散列映射,并且该函数需要一个文件名。这是我到目前为止所做的,但我很困惑。
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(int i = 0; i < 100; i++)
{
word_map[words[i]]++;
}
你在这里做什么? 100从哪里来?为什么你关心单词的单个字母(words[i]
让你如此)?
如果我正确理解你的任务,难道还不够吗
++word_map[words];
代替?
还有你为什么returnwords
?它是一个字符串,您的函数应该 return 和 int。相反,找到地图中的最大值即可。
您的代码中有几个问题可能会导致它无法按预期工作。
首先是 for i
循环。你为什么需要taht循环?就这样吧,你要数字数
while(in >> words)
{
word_map[words]++;
}
将words
重命名为word
,实际上你在这里读了一个字in >> words
。
第三个是return语句。当声明函数 returns int
.
string
但是 return 还没有什么,因为到目前为止我们只知道每个单词出现的次数。 运行 寻找最大值的循环。
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
.