背景
auto是C++中的關鍵字。
自C++11以來,auto關鍵字用於兩種情況:
- 聲明變量時根據初始化表達式自動推斷該變量的類型;
- 聲明函數時函數返回值的佔位符。
簡介
auto可以在聲明變量時根據變量初始值的類型自動爲此變量選擇匹配的類型。
舉例:對於值x=1;即可以聲明:int x = 1
或long x = 1
,也可以直接聲明auto x = 1
。
用法
自動判斷被聲明變量類型
auto f=3.14; //double
auto s("hello"); //const char*
auto z = new auto(9); // int*
auto x1 = 5, x2 = 5.0, x3='r'; //錯誤,必須是初始化爲同一類型
但是,這麼簡單的變量聲明類型,不建議用auto關鍵字,而是應更清晰地直接寫出其類型。
auto關鍵字更適用於類型冗長複雜、變量使用範圍專一時,使程序更清晰易讀。
在vector容器中使用
vector<int> vec;
for(auto it = vec.begin(); it != vec.end(); ++it)
{
cin >> *it; //爲vector數組賦值
}
保存lambda表達式類型的變量聲明
auto ptr = [](double x){return x*x;};//類型爲std::function<double(double)>函數對象
在模板函數中使用
template <class T, class U>void Multiply(T t, U u)
{
auto v = t * u;
std::cout<<v;
}
模板函數的返回類型如果也是依賴於從模板參數推導:
template <typename _Tx, typename _Ty>
auto multiply(_Tx v1, _Ty v2) -> decltype( _Tx * _Ty )
{
return v1*v2;
}
auto result = multiply(101, 1.414); // 結果類型是double
參考資料
https://zh.wikipedia.org/wiki/Auto_(C%2B%2B)