비버놀로지

[Modern C++] lambda 본문

LANGUAGE STUDY/C C++

[Modern C++] lambda

KUNDUZ 2023. 1. 17. 09:41
728x90

 

 

lambda

[captures](parameters) -> return type { body };

 

captures : scope 내의 외부 변수를 reference or value로 참조가능

parameters : 매개 변수 (없으면 생략 가능)

return type : 생략시 body의 return type으로 결졍

body : 함수 본문

 

captures 활용

[] : 외부 변수 사용 X

[&] : scope 내의 모든 외부 변수들을 레퍼런스로 가져온다.

[=] : scope 내의 모든 외부 변수들을 값으로 가져온다.

[=, &x] : x(reference참조) | 나머지 (value 참조)

[x, &y, &z] : x (value 참조) | y, z (reference 참조)

 

auto sum_n = [](int n) {
	int sum = 0;
	for (int i = 1; i <= n; i++) sum += i;
		return sum;
	};
	sum_n(10); // result : 55
	int arr[5]{ 1,2,3,4,5 };
	auto increase = [&] {
	for (int i = 0; i < 5; i++) arr[i]++;
};

increase(); // arr : 2,3,4,5,6

 

 

 

 

 

728x90
Comments