initializer_list — std::initializer_list

initializer_list — std::initializer_list

std::initializer_list 클래스 템플릿은 **중괄호 초기화 목록 {a, b, c}에 해당하는 배열에 대한 경량 뷰(lightweight proxy)**예요. C++11에서 도입됐어요. <initializer_list> 헤더에 있어요.

(멤버 초기화 목록(member initializer list)과 혼동하지 마세요.)

출처: cppreference

본문

// <initializer_list> 헤더, C++11
template< class T >
class initializer_list;

사용 예 — 함수 인자

#include <initializer_list>

int sum(std::initializer_list<int> il) {
    int total = 0;
    for (int x : il) total += x;
    return total;
}

sum({1, 2, 3, 4});   // 10

생성자에서

struct Box {
    std::vector<int> values;
    Box(std::initializer_list<int> il) : values(il) {}
};

Box b{1, 2, 3};   // 중괄호로 생성

특징

  • {...} 구문과 연결{} 목록이 배열을 만들어 그 뷰를 제공.
  • 소유하지 않는 뷰 — 참조하는 배열의 수명 관리 주의.
  • begin()/end()/size() 제공 — 범위 기반 for 가능.
  • 순회는 읽기 전용(const T*).
auto il = {1, 2, 3};      // initializer_list<int>
std::size_t n = il.size(); // 3
for (int x : il) { /* ... */ }

주의

  • 빈 목록 {}는 기본 생성과 모호할 수 있어요.
  • 수명은 다루는 배열이 존재하는 동안만 유효해요 (주로 함수 호출 즉시).

std::initializer_list는 중괄호 초기화 목록을 함수·생성자에 전달할 때 사용하는 표준 타입이에요.

더 알아보기 (Learn more)

cppreference