1 분 소요

#include <iostream>

void foo(std::initializer_list<int> e) {
    auto p = e.begin();     // begin(e);
    while(p != e.end()) {   // end(e);
        std::cout<<*p<<" ";
        ++p;
    }
    std::cout<<std::endl;
}

int main() {
    std::initializer_list<int> e1{1, 2, 3, 4, 5};
    std::initializer_list<int> e2 = {1, 2, 3, 4, 5};
    foo(e1);        // 1 2 3 4 5
    foo({1, 2, 3}); // 1 2 3
                    // c++98: error. c++11 부터 지원
}

생성자와 initialize list

#include <iostream>
#include <vector>

class Point {
    int x, y;
public:
    Point(int a, int b) {
        std::cout<<"int, int"<<std::endl;
    }
    Point(std::initializer_list<int> e) {
        std::cout<<"initialize list"<<std::endl;
    }
};

int main() {
    Point p1(1, 2);     // int, int
    Point p2({1, 2});   // initialize list
    Point p3{1, 2};     // initialize list
                        // 없으면 int, int 호출
    
    Point p4(1, 2, 3);  // error.
    Point p5{1, 2, 3};  // ok
    Point p6 = {1, 2};  // ok
    
    // 1 ~ 10 까지로 초기화 된 vector 만들기
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
}

카테고리:

업데이트:

댓글남기기