[英]Find the most frequently word using hashmaps c++
我需要找到最頻繁出現的單詞並返回該值。 我必須使用哈希映射,並且該功能將使用文件名。 這是我到目前為止所做的,但我非常困惑。
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];
代替?
另外你為什么返回words
? 這是一個字符串,您的函數應該返回int。 而是在地圖中找到最大的價值,您就完成了。
您的代碼中存在幾個問題,可能導致其無法正常工作。
首先是i
循環。 為什么根本需要泰銖循環? 保持這樣,您需要數字。
while(in >> words)
{
word_map[words]++;
}
將words
重命名為word
,實際上您in >> words
中讀一個單詞。
第三是return語句。 聲明函數返回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
由一個單詞對及其出現次數組成。 我們需要遍歷所有這些對以尋找最大的出現次數。 為此,我們使用iterator it
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.