C++11-大括號的使用


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;
    }
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM