簡體   English   中英

使用hashmaps查找最常見的單詞C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM