C++/Modern C++(11, 14, 17, 20)

[C++11] Initializer lists

deulee 2023. 8. 28. 13:56

"Initializer lists"는 C++11에서 도입된 객체를 초기화하는 데 사용되는 편리한 방법이다.

 

이는 "braced list(중괄호)"를 이용하여 만들 수 있는데 예를 들어 `{1, 2, 3}`은 정수의 배열을 만든다. 그리고 이 타입은 `std::initializer_list<int>`가 된다.

 

이는 함수에 인자로 넘길 때 벡터 대신 사용하기 유용하다.

#include <iostream>

int sum(const std::initializer_list<int>& list)
{
	int total = 0;
	for (auto& it : list)
		total += it;
	return total;
}

int main(void)
{
	auto list = {1, 2, 3}; // `std::initializer_list<int>`
	sum(list); // 6
	sum({1, 2, 3}); // 6;
	sum({}); // 0;
	return 0;
}