auto
提供: C++入門
スポンサーリンク
C++のauto型とは、C++11で追加された型推論です。コンパイル時に型を推測し、適切な型として扱ってくれます。
読み方
- auto
- おーと
目次
概要
auto型を使用するとコードが簡単に書けるようになります。イテレータのコードが非常に単純になります。さらに Range based forを利用することにより、さらにコードは簡素になります。
これは、イテレータの例です。ループを書くために、たくさん書かないといけません。
std::vector<int> v; for(std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) { ; }
autoキーワードを使うこと、簡単に書けます。
std::vector<int> v; for(auto it = v.begin(); it != v.end(); ++it) { ; }
auto型とポインタ、参照などの扱い
auto型の型推論は、以下のように扱われます。
int a = 123; auto* p = &a; // int* p = &a; auto& r = a; // int& r = a; const auto& c = a; // const int& c = a;
autoを用いたループの例
auto は、C++11 で追加されました。
ソースコード auto1.cpp
このプログラムは、std::vector の内容をfor文で表示するだけの例です。
#include <iostream> #include <vector> using namespace std; int main(int argc, char const* argv[]) { std::vector<int> v; v.push_back (1); v.push_back (2); v.push_back (3); for (auto x: v) { cout << x << endl; } return 0; }
コンパイル
clang++ -std=c++11 auto1.cpp -o auto1
実行例
% ./auto1 1 2 3
Range based for + auto 型の例
C++11からは、forとauto型で非常にループが簡単になります。
#include <iostream> #include <vector> using namespace std; int main(int argc, char const* argv[]) { std::vector<int> v{1,2,3}; for (auto x: v) { cout << x << endl; } return 0; }
C++11のautoが使えないケース
- 変数宣言時に初期化しない場合です。
- 引数の型にautoが使えません。
- 戻り値の型をauto型にできません。
エラー
関連項目
ツイート
スポンサーリンク