問題CPP02102の解答例と解説 C++ Lv.3

vector<string> 特定の文字列の出現回数(15分)


<解答例 1>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

まず、3行目の引数の説明は、前の問題を見てね。
 vector<int> 総和

[] を使って配列のように各要素を取得した例だよ。9行目で[] を使って、i 番目の文字列を取得しているけど、const string& curr という変数に代入しているね。これは、vector の i 番目の文字列の参照を取得しているという意味だよ。const 修飾子がついているのは、もともとこの関数の引数をもらうときに vectorA に const 修飾子が付けられていて、これはすなわち vectorAの中身を変えないでね、という意味なので、1つ1つの要素に対しても、const をつける必要があるんだ。

そして、string 型は、== で比較して true か false を返すことになっているから、10行目のような条件文を書くことができるんだ。



<解答例 2> 不正解
F11キーでフルスクリーンモード、Escキーで元に戻ります。

これでも完全な間違いではないけど、10行目のところで、const string& ではなく、const string を使用しているところが、解答例1に比べて string 型のコピーコンストラクタが1回呼ばれる分だけ、オーバヘッドなんだ。


<解答例 3>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

10行目のところで、イテレータの値を直接、文字列と比較しているね。*iter の値は、イテレータ(iter)に*をつけることによって、実態、つまりstring オブジェクトを呼び出しているんだ。それでそのstringオブジェクトと文字列を比較しているよ。


<解答例 4>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

C++標準ライブラリの count 関数を使った例だよ。


<解答例 5>
F11キーでフルスクリーンモード、Escキーで元に戻ります。

C言語の標準ライブラリのstrcmp 関数を使った例だよ。string オブジェクトを使っているので、通常は == オペレータによる比較をすればいいから、ここであえて strcmp 関数を使う意味はないかもしれないね。けれどもこれでもきちんと動くよ。




初めての方へ:このページは、このサイトで用意しているプログラミング問題の解答と解説のページです。このサイトではブラウザ上からプログラミングができます。会員登録(無料)して、プログラミングしてみませんか?
新規登録



ログイン
メールアドレス:

パスワード:



パスワード紛失

新規登録