이글은 "전문가를 위한 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)
'Program Language > c++' 카테고리의 다른 글
c++ 기초(포인터 사용법) (0) | 2023.01.12 |
---|---|
c++ 기초(스택과 힙) (0) | 2023.01.11 |
c++ 기초(반복문(while, do/while, for, 범위 기반 for)) (0) | 2023.01.09 |
C++ 기초(구조적 바인딩) (0) | 2023.01.09 |
c++ 기초(c++ 스타일 배열) (0) | 2023.01.06 |
댓글