2013年10月17日木曜日

C++11のauto

今更ながら、どうやらautoの意味が全く変わっていたようだ。従来は記憶クラスの指定でだったが、C++11では初期化しながら変数宣言する際、型推論して良きに計らってくれる。既存の予約語を使いまわすのは微妙な気がするけど、まあ、従来のautoを明示的に指定しているコードなんて見たことも書いたこともないから、まず誰も困らないか。

で、その新しいautoを使うと、

std::vector vec(100);
for (std::vector::iterator it = vec.begin(); it != vec.end(); ++it) { … }
これを
std::vector vec(100);
for (auto it = vec.begin(); it != vec.end(); ++it) { … }
こう書ける。要するに、右辺を見れば分かるだろ、ってこと。あくまでコンパイル時に自動的に型を決定してくれるというだけで、決して型付けが動的になったわけではないので、性能が落ちることもない。

これは便利な機能だと思う反面、型も調べずとりあえずautoで受けてしまうようなコードを書きたくなりそう。書く気になれば書けるけど面倒なときにのみ使うようにしよう。

0 件のコメント:

コメントを投稿