Accelerated C++の演習3-3は、ループデザインに関する2つのより広い質問につながりました。練習問題は、任意の数の単語をベクトルに読み込んだ後、その単語がその入力に現れる回数を出力することです。ループデザイン:カウントとその後のコードの複製
出力コードは、最後の単語を処理するためにループ外で再び発生する必要があることに注意してください。私はそれを関数に移して、という関数をという関数を2回呼び出すことが重複したコードの複雑さを心配していたなら、2回呼び出すことができると思います。
質問1:このような回避策は一般的ですか?このような重複を避けるためにループをリファクタリングする典型的な方法はありますか?
質問2:私の解決策は簡単ですが、私はゼロから数えることに慣れています。それを尊重したループを書くより受け入れやすい方法がありますか?それとも最適な実装ですか?
'std :: map word_count; for(const std :: string&word:words){word_count [word] ++; } for(std :: pair count:word_count){std :: cout << count.first << ":" << count.second << "\ n"; } '。か何か。 –
コードが壊れているか、問題の説明が消えています。 '[cat"、 "dog"、 "cat"] 'が出力する' cat:1'、 'dog:1'、' cat:1'のように、連続した出現回数を数えます。 –