initializer_list<T>

 

#include <cstdio>
#include <iostream>
#include <tuple>
#include <vector>
#include <complex>

using namespace std;

void print(initializer_list<int> list)
{
    for (auto p = list.begin(); p != list.end(); ++p) {
        cout << *p << endl;
    }
}

class P
{
public:
    P(int a, int b)
    {
        cout << a << "  " << b << endl;
    }

    P(initializer_list<int> list)
    {
        cout << "initializer_list : ";
        for (auto p : list) {
            cout << p << " ";
        }
        cout << endl;
    }
};

int main()
{
    cout << __cplusplus << endl;

    // 初始化,编译器只要看到{}就会做出一个initializer_list<T>
    // 他内部关联到一个array<T,n>
    int values[]{ 1,2,3 };
    vector<int> v{ 1,2,3,54,66,55 };
    complex<double> c{ 4.0,3.0 };

    //int a{ 5.5 };// error narrowing
    //cout << a;

    print(/*initializer_list<int> */{ 1,2,11 });

    P p1(1, 2);
    P p2{ 1,2 };
    P p3{ 1,2,3,40 };
    P p4 = { 55,66 };
    /*
        1  2
        initializer_list : 1 2
        initializer_list : 1 2 3 40
        initializer_list : 55 66
    */

    system("pause");
    return 0;
}

 

posted @ 2020-04-05 21:52  狂奔~  阅读(245)  评论(0)    收藏  举报