2012-03-22 7 views
0

Accelerated C++の演習3-3は、ループデザインに関する2つのより広い質問につながりました。練習問題は、任意の数の単語をベクトルに読み込んだ後、その単語がその入力に現れる回数を出力することです。ループデザイン:カウントとその後のコードの複製

出力コードは、最後の単語を処理するためにループ外で再び発生する必要があることに注意してください。私はそれを関数に移して、という関数をという関数を2回呼び出すことが重複したコードの複雑さを心配していたなら、2回呼び出すことができると思います。

質問1:このような回避策は一般的ですか?このような重複を避けるためにループをリファクタリングする典型的な方法はありますか?

質問2:私の解決策は簡単ですが、私はゼロから数えることに慣れています。それを尊重したループを書くより受け入れやすい方法がありますか?それとも最適な実装ですか?

+0

'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"; } '。か何か。 –

+0

コードが壊れているか、問題の説明が消えています。 '[cat"、 "dog"、 "cat"] 'が出力する' cat:1'、 'dog:1'、' cat:1'のように、連続した出現回数を数えます。 –

答えて

0

http://www.cplusplus.com/reference/stl/map/という単語をキーとして使用し、値をカウントとして使用できないのはなぜですか?

+0

OPコードはスペース(最初の入力を禁止)でO(1)ですが、同じ問題を解決していないため解決策はありません。 –

関連する問題