1

段落や記事の内容を挿入し、単語ごとに処理したい。以下では、各文字列を取得して、その発生を取得しようとしています。最後に、出現回数が最大の単語が必要です。私はc ++が初めてです。現在、2 つの文字列を静的に挿入しています。エラーが発生しますexpected primary-expression before ‘.’ token。コードは次のとおりです。

#include <string>
#include <iostream>
#include <unordered_map>

int main()
{
    typedef std::unordered_map<std::string,int> occurrences;
    occurrences s1;
    s1.insert(std::pair<std::string,int>("Hello",1));
    s1.insert(std::pair<std::string,int>("Hellos",2));

    //for ( auto it = occurrences.begin(); it != occurrences.end(); ++it )  this also gives same + additional " error: unable to deduce ‘auto’ from ‘&lt;expression error>’" error
    for (std::unordered_map<std::string, int>::iterator it = occurrences.begin();//Error is here
                                                    it != occurrences.end(); ////Error is here
                                                    ++it)
    {
        std::cout << "words :" << it->first << "occured" << it->second <<  "times";
    }

    return 0;
}

間違いはどこですか?

4

2 に答える 2

1

は型であり、その型の変数であるため、s1.begin()ands1.end()ではなくoccurrences.begin()andを使用する必要があります。occurrences.end()occurrencess1

于 2013-08-23T05:16:45.550 に答える
1

occurrencesオブジェクトではなく型です。オブジェクトを使用したいs1

バージョン 1:

for (auto it = s1.begin(); it != s1.end(); ++it)

バージョン 2:

for (std::unordered_map<std::string, int>::iterator it = s1.begin(); it != s1.end(); ++it)

バージョン 3:

for (auto pair : s1)
于 2013-08-23T05:17:21.527 に答える