1、前言
最開始是看到別人的代碼,在聲明拉姆達函數的時候,將函數體用大括號包裹,返回值作為auto接收,覺得新奇【其實我內心是痛恨這種方式的,讓沒見過這種寫法的人會恍惚一下,真就為了裝逼,真就你厲害唄,咱用了多少年的等號,現在又得花時間去學習你的牛逼之處唄】
在C++11中這種方式被稱為初始化列表【構造函數里也有個初始化列表。。】【initializer list】,使用這種方式需要使用<initializer_list>頭文件中initialize_list類模板的支持。也就是說如果是自定義類,想要實現這匯總功能就要去使用initialize_list,具體怎么用就不去研究了,沒啥意義,還增加代碼,還讓使用時的代碼晦澀難懂。
2、初始化數組1
int a[] = { 1, 2, 3 };//C++98支持,C++11支持
3、初始化數組2,不使用等號
int b[]{2, 3, 4}; //C++98不支持,C++11支持
4、初始化容器
vector<int> c{ 1, 2, 3 };//C++98不支持,C++11支持
5、初始化二維容器
map<int, float> d = {{ 1, 1.0f }, { 2, 2.0f }, { 3, 3.0f } };//C++98不支持,C++11支持
6、重點來了:初始化拉姆達函數
auto cb { [](){ std::cout<< "timer out..."<<std::endl; } };