程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c++11特性之initializer_list

c++11特性之initializer_list

編輯:關於C++

之前寫了一個博客《 淺析C++中的初始化列表(區別賦值和初始化)》,講述了類的構造函數使用初始化列表來初始化成員變量。

現在,撇開過往不談,就談一談普通的變量賦值。即是我們要提到的initializer_list。

這同樣是一個C++11的特性。

過往,我們這樣給vector賦值:

std::vector v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);

需要感謝的是,C++11讓你更方便。

std::vector v = { 1, 2, 3, 4 };

這就是所謂的initializer list。

更進一步,有一個關鍵字叫initializer list

C++11允許構造函數和其他函數把初始化列表當做參數。


#include 
#include 

class MyNumber
{
public:
    MyNumber(const std::initializer_list &v) {
        for (auto itm : v) {
            mVec.push_back(itm);
        }
    }

    void print() {
    for (auto itm : mVec) {
        std::cout << itm <<  ;
    }
    }
private:
    std::vector mVec;
};

int main()
{
    MyNumber m = { 1, 2, 3, 4 };
    m.print();  // 1 2 3 4

    return 0;
}

最後寫一個類,可以對比一下,加深理解

class CompareClass 
{
  CompareClass (int,int);
  CompareClass (initializer_list);
};

int main()
{
    myclass foo {10,20};  // calls initializer_list ctor
    myclass bar (10,20);  // calls first constructor 
}

這下子明白 {} 和 () 的區別了吧!!!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved