본문 바로가기
Visual Studio

C++ 람다 함수

by DarkRock 2024. 4. 30.
반응형

1. 정의
- 람다식, 또는 람다 함수라 부르며 익명 함수를 지칭하는 용어

2. 유의사항(C++)
- C++ 11부터 지원하며, 람다의 인자에 auto는 C++ 14부터 지원

3. 사용법과 특징 
- 기본형: [캡처블록](매개변수){표현식}
- 캡처는 복사(=)와 참조(&)중 선택이 가능하고, 캡처형식을 지정 안 할 수도 있음([])
- 캡처는 외부변수에 영향이 있고 매개변수에는 영향을 주지 않음
- 외부변수를 사용하지 않을 때는 []로 선언 가능

 

4. 사용예

 

int main()
{
	int a = 5;
	auto func = [&](int b)
	{a += b;};
	int c = 5;
	func(c);
	cout << a << endl;	
}

- 위 코드는 캡처 참조
- 캡처 블록은 매개변수에 영향이 없고 위 코드에서 외부변수는 a, &로 선언했기 때문에 결과는 10으로 반환
- 위 코드에서 [&] 대신 [=] 선언 시 컴파일 오류 발생

 

 

int main()
{	
	int a = 5;
	auto func = [=](int &b)
	{b += a;};
	int c = 5;	
	func(c);
	cout << c << endl;	
}

- 위 코드는 캡처 복사

- 외부 변수 a가 복사돼서 람다 함수 내에서 사용됨

- 결과는 10

 

int main()
{	
	auto func = [](int a, int &b)
	{b = a;};
	int c = 5;
	int d;
	func(c,d);
	cout << d << endl;	
}

- 위 코드는 캡처 지정하지 않음: 외부변수를 사용하지 않기 때문

- 결과는 5

반응형