0

ファイルを文字列ベクトルに読み込み、一意の単語が出現する回数をカウントする辞書を作成しようとしています。これが私がこれまでに持っているものです:

int main()
{
    ifstream input1;
    input1.open("Base_text.txt");

    vector<string> base_file;
    vector<int> base_count;


    if (input1.fail())
    {
        cout<<"Input file 1 opening failed."<<endl;
        exit(1);
    }

    make_dictionary(input1, base_file, base_count);


}

void make_dictionary(istream& file, vector<string>& words, vector<int>& count)
{


    string word;
    int i=0;

    while (file>>word)
    {
        words.push_back(word);
        cout<<words[i];
        i++;
    }


    for (i=0; i<words.size(); i++)
    {
        if ((words[i+1]!=words[i]))
            {
                count.push_back(i);

            }
    }

質問 1: ベクトルにスペースを含め、個々の単語を認識させるにはどうすればよいですか? 質問 2: 2 番目の部分 (for ループ) の進め方について何かアイデアはありますか?

4

1 に答える 1

5

これはかなり非効率的です。使用する必要があります

 std::map<string, int> 

代わりは。それはより簡単で効率的です。

ファイルをループします。単語が表示されたら、それがマップにあるかどうかを確認します。そうでない場合は、カウント 1 で新しい単語を追加します。そうである場合は、カウントを増やします。

于 2013-04-26T21:41:31.010 に答える