2017-11-17 7 views
1

私はいくつかのメソッドを定義して、次の単語があるかどうかを調べ、次の単語があるかどうかを調べます。C++でベクトルを使う(単語がある場合)

私はその後、私はそれは単にベクトルをループのために実行して動作させることができますループ

のために使用し、ベクトルへのファイルの内容を追加し、テキストファイルの入力を取る:

for (int x = 0; x != v2.size(); ++x) { 

は、しかし、私は私の2つのメソッドを使用したい

bool ReadWords::isNextWord() 

あなたの関数が取る作ることができる

vector<string> bigTextFile; 
vector<string> vct; 

while(ReadWords::isNextWord(vct)) 
{ 
     string nextWord = ReadWords::getNextWord(vct); 

     if(nextWord == bigTextFile[i]) 
     { 
     counter++; 
     } 
} 

:0

それでは、どのように私は

vector<string> bigTextFile; 
vector<string> vct; 

while(vct.isNextWord) { 
     vct.getNextWord 

     if(vct.getNextWord == bigTextFile[i] { 
     counter++ 
    } 
} 

ような何かをするだろう、私はあなたがコード

+7

C++にはたくさんのnice [アルゴリズム関数](http://en.cppreference.com/w/cpp/algorithm)があります。私はあなたが何か有用なものを見つけることができると確信しています。 –

+1

関数を 'std :: vector'に追加することはできません。あなたが 'std :: unordered_set'を見たなら、おそらく害はありません。 – molbdnilo

+0

実装全体を投稿できますか? –

答えて

0

のいずれかのより多くを必要とする場合には、この程度は何を知ってみましょうパラメータとしてベクトルに格納し、各関数内のベクトルに対して作業を行います。私はあなたの実装が完全なコードではないので100%確実ではありません。

+0

私はこれを一度試してみましたが、 '' ReadWords :: isNextWord(std :: vector >)への呼び出しでエラーが発生しました。 – beastcplusplus

+0

もちろん、その引数を取る関数のオーバーロードをまだ提供していないので... –

+0

^あなたは、パラメータと引数としてベクトルを受け取るようにコードと関数を変更する必要があります。 – Katianie

0

私はあなたがオブジェクトを作成しようとしている理由はわからないんだけど、ここで私が問題に近づいているだろうかです:

ステップ1.言葉

bool is_needed_word(const std::string& word, const std::vector<std::string>& needed_words) 
{ 
    if (std::find(needed_words.begin(), 
        needed_words.end(), 
        word) != needed_words.end()) 
     return true; 
} 

//some where in your function 
std::vector<std::string> needed_words{"apple", "moon", "etc"}; 
auto predicate = [&needed_words](const auto& word) 
       {return is_needed_word(word, needed_words);} 

ステップのための述語を作成します。 2.ストリーム内の単語で何をしたいのかをコピー/カウントする。

//copying 
std::vector<std::string> extracted_words; 
std::ifstream input_file{"input.txt"}; 
//check if opened correctly 
std::copy_if(std::istream_iterator<std::string>(input_file), {}, 
      std::back_inserter(extracted_words)); 

//counting 
std::size_t occurrence_counter = std::count_if(std::istream_iterator<std::string>(input_file),{},predicate) 
+0

検索と述語アルゴリズムを使ったより高度な答えです。ホイールを再発明しないためのポイント。 – Katianie

関連する問題