본문 바로가기
Program Language/c++

C++ 기초(이니셜라이저 리스트)

by 토담이아빠 2023. 1. 10.

이니셜라이저 리스트

 

이글은 "전문가를 위한 c++(개정4)" 학습한 내용을 직접 실습해보며 정리한 Review 글입니다.


이니셜라이저 리스트(initializer_list)

 

함수의 매개변수로 동일 타입의 여러 인수를 받는 함수를 쉽게 작성할 수 있습니다. initializer_list는 템플릿이기 때문에 타입지정은 꺽쇠로 묶어서 지정해야합니다. 다음은 이니셜라이저를 매개변수로 갖는 함수의 예입니다.


#include <iostream>
#include <initializer_list>
 
using namespace std;
 
 
int makeSum(initializer_list<int> lst)
{
	int total = 0;
	for (int value : lst) {
		total += value;
	}
	return total;
}
 
int main()
{	
	
	int a = makeSum({ 1,2,3 });
	int b = makeSum({ 10, 20, 30, 40, 50, 60 });
 
	cout << "Sum(a) = " << a << endl;
	cout << "Sum(b) = " << b << endl;
 
	return 0;
}

결과

Sum(a) = 6
Sum(b) = 210

이니셜라이저 리스트를 사용하기 위해서 <initializer_list> 헤더파일을 따로 포함했으나 테스트 결과 <iostream>만 포함해도 사용가능합니다. 또한 이니셜라이저리스트 타입을 지정하지 않아도 구조체(struct)나, public 멤버변수 를 갖는 클래스(class)등은 생성자에 이니셜라이저 리스트를 기본으로 사용할 수 있습니다.


#include <iostream>
//#include <initializer_list>
 
using namespace std;
 
struct SPoint
{
	int x;
	int y;
};
 
class CPoint
{
public:
	int x;
	int y;
};
 
int main()
{	
	
	SPoint p1({ 1, 2 });
	CPoint p2({ 4, 5 });
 
	cout << "P1 = (" << p1.x << "," << p1.y << ")" << endl;
	cout << "P2 = (" << p2.x << "," << p2.y << ")" << endl;
 
	return 0;
}

결과

P1 = (1,2)
P2 = (4,5)

 

댓글