vue 做網(wǎng)站微信公眾號小程序怎么做
目錄
initializer_list
C++自動類型推斷
auto
typeid
decltype
initializer_list<T>
C++支持統(tǒng)一初始化{ },出現(xiàn)了一個新的類型initializer_list<T>,一切類型都可以用列表初始化。提供了一種更加靈活、安全和明確的方式來初始化對象。
class Date
{
public:Date(int year,int month,int days):_year(year),_month(month),_days(days){}
private:int _year;int _month;int _days;
};
int main()
{//{}列表初始化(統(tǒng)一初始化)int a { 10};int b = { 10 };char c={'x'};int arr[3] = { 1,2,3 };string s{"hello world"};Date d1(2022,1,2);//C++98的初始化方式Date d2{ 2019,2,3 };//C++11的列表初始化Date d3 ={ 2023,7,1 };//{2023,7,1}隱式類型轉換->臨時對象->d3拷貝構造vector<int> v = { 1,2,3,4,5,6 };C++11的列表初始化,vector具有形參類型是initializer_list的構造函數(shù)list<int> li = { 1,2,3 };return 0;
}
initializer_list結構
創(chuàng)建一個initializer_list,并遍歷:
initializer_list<int> il = { 1,2,3 };
initializer_list<int>::iterator it = il.begin();
while (it != il.end())
{cout << *it << endl;++it;
}
可以將initializer_list作為容器構造函數(shù)的形參類型來初始化容器,例如:
C++自動類型推斷
auto
通過auto關鍵字可以使程序員在寫一些長度較長的類型名時免去拼寫,使用auto來代替,auto會自動推導出等號右邊的類型。
vector<int> v;
auto it = v.begin();//auto自動推導迭代器類型
//本來需要這樣寫vector<int>::iterator it=v.begin();
typeid
cout << typeid(v).name() << endl;//打印出類型的字符串
decltype
使用推導出來的類型定義新的變量