サバです。
前回の記事は投稿後に大分変更・加筆をしたので、チラ見してくださいお願いします。
それに加えて、詰め込みすぎたので今回から1項目くらいずつで行きたいと思います。
<以下長い注意>
ここの内容は、サバが適当な自己解釈を重ねた結果、攪拌され白濁してしまった知識の泉から、沈殿物を素手で持ち上げようとした結果です。保証はしかねます。ご了承ください。
内容はEffectiveModernC++をわざわざ書き写したような何かです。
題名にEffectiveModernC++が入っていないのは更新が途中で止まる自信があるからです。
また、もしよろしければ、間違い、気になったところ、分かりづらいところなどを指摘してもらえると、サバがピチピチ跳ねて喜びます。喜びすぎてプログラミング言語C++第四版をあなたに投げつけるかもしれません。
(ぜひ教えてください。よろしくお願いします。 < ( _ _ ) > 何でもするとは言いませんから…)
項目5 明示的型宣言よりも auto を優先する
結論:いいものはどんどん使おう!
IDEあるならとりま使いましょう。ぐう有能。
(もちろん注意するとこもあるみたいですが…
具体的な使用例(特に変数宣言と範囲for文!!)
変数宣言 | auto value = 0; | int |
範囲for文 | for (const auto& content : container) { } | 範囲for文 + auto&は最強 |
関数の戻り値 | auto func(){ return “auau”; } | const char * |
ラムダ式の引数 |
auto lambda = [](auto& arg) { std::cout << arg; }; |
これはC++14以降の機能 |
・auto ? なにそれおいしいの?
つ autoはおいちい。(前回の記事)
もし良ければ下にある「autoの利点」もどうぞ…
( このサイトが大好き。 : cpprefjp) // 神様です。いつもありがとうございます。
・深淵を覗きに行くために…
auto の利点
・変数の初期化忘れがなくなる
auto i = 0; |
- 型推論のために必ず初期値を指定する必要がある。
・コンパイラが適切な型を選んでくれる
std::vector<int> vec; auto size = vec.size(); |
- std::vector<int>のサイズを表す非負整数型は std::vector<int>::size_type だけど、そんな長いの覚えてコーディングする必要がなくなる。
・労力が減る
std::vector<int> data(10)
for (auto& val : data) for (auto ite = data.crbegin(); ite != data.crend(); ++ite) |
- 入力から10個の整数を受け取って逆順で出力するプログラム
- std::vector<int> の int を書き換えるだけでどんな型にも対応できる(double, std::string, long, etc…)
- イテレータの型指定で悩むこともなくなる
- コンパイラに任せた方がヒューマンエラーは減る。楽しよう!
私は脳死して使うようにしています。autoだいしゅき。
C++に追加されたということは、いいからだまって使えという機能のはずですから。(盲信)