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는 중괄호 초기화 목록을 함수·생성자에 전달할 때 사용하는 표준 타입이에요.