LoginSignup
1
4

More than 3 years have passed since last update.

autoを使おーと

Last updated at Posted at 2019-09-06

はじめに

C++を好きでちょこちょこプログラミングしており、ゆるやかに上達しています。
最初は意義がわからなかったautoについて、使いたくなった理由を書きます。

autoって?

型を推定してくれるヤツ

なんでautoを使うの?

コードが短くなる
そもそも型名が存在しない(ラムダ式など)

どんな時に使うの?

これまでに自分が使うべきだと思ったのが同じものを準備する時。
使用例を以下2つ挙げる。

1. 同じ型の変数を代入する場合

sample_not_auto
vector<int> v1 = {1, 2, 3, 4, 5};
vector<int> v2 = v1;

下のようにautoを使うことができる。

sample_auto
vector<int> v1 = {1, 2, 3, 4, 5};
auto v2 = v1;

ちょっと短くなった。
ただのvectorではこの程度の省略であるが、OSSなどのとても長い型を用いる時にはかなりの文字省略になる。

2. 型の記述を右辺に持っていきたい場合

sample_not_auto
vector<vector<int>> vv (10, vector<int>(10, 5));

こちらでautoを用いると、

sample_auto
auto vv = vector<vector<int>>(10, vector<int>(10, 5));

こちらは短くなるというよりは、型を右辺のみに書くことができるので、後から見返しやすい。
ここではあまり嬉しくないが、OSSなどで見られるような非常に長い型では威力を発揮する。

3. ヘルパ関数を用いる場合

存在は知っていて、使う場面に出くわしていないので、使用例は割愛するが、型推論補助というのがある(気が向いたら記載します)。

4. 型推論補助を用いる場合

autoに似ているが少し違うとのこと。
以下のようにすると、

deduction_guide
vector v = {1, 2, 3};

とするとvector<int>に推論される。

注意点

あくまで、右辺値を左辺値に代入する際に型を推定するので、右辺から型がわからないものは使用できないことに注意。

おわりに

使った方が見やすくなるとは思っていつつ。autoがたくさん並んでいるとよくわからなくなってしまうので、好みで使っています。
PCLを使用するときはどうしても型が長くなりがちなので、積極的に使っている。

1
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4