람다식의 활용
람다
수학에서 함수를 단순하게 표기하는 것을 '람다식'이라고 합니다. 같은 맥락에서 C++에서 간단하게 만든 익명의 함수를 람다식이라고 합니다.
auto를 통한 람다식 저장 및 호출
람다식의 장점 중 하나는 함수 포인터로 저장 및 호출이 가능하다는 것입니다. 람다식을 저장할 때 함수 포인터를 선언해야 하지만, auto를 이용하면 이 과정을 간단하게 처리할 수 있습니다.
코드
#include <iostream>
using namespace std;
int main()
{
auto question = [](int x, int y)
{
cout << x << "와(과) " << y << "중 큰 수는 무엇입니까?\n";
};
question(1, 2); // 1와(과) 2중 큰 수는 무엇입니까?
}
이 방법의 장점은 인라인이 가능하다는 것입니다. auto로 선언된 람다식은 컴파일러가 자체적으로 판단하여 인라인 될 수 있습니다. 그렇지 않은 경우에 인라인이 불가능합니다.
값으로 캡쳐하는 람다식
람다식은, 자신이 존재하는 영역에 선언된 변수를 사용할 수 있습니다. 단 그러기 위해선 데이터를 '캡쳐'해야 합니다. 캡쳐라는 과정은 람다식 앞에 위치한 대괄호에 값을 입력하여, 람다식이 특정 데이터에 접근할 수 있도록 허용하는 것을 의미합니다. 아래는 값으로 캡쳐하는 람다식입니다.
코드
#include <iostream>
using namespace std;
int main()
{
double pi = 3.14;
auto calc = [pi](int r) -> double { return pi * r * r; }; // pi를 값으로 캡쳐
cout << "면적은 " << calc(3); // 면적은 28.26
}
참조로 캡쳐하는 람다식
값뿐만 아니라 참조로도 캡쳐할 수 있습니다. 단, 람다식이 존재하는 영역에서 접근할 수 있는 변수여야 합니다.
코드
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
[&sum](int x, int y)
{
sum = x + y;
} (2, 3);
cout << sum; // 5
}
Author And Source
이 문제에 관하여(람다식의 활용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@modin/람다식의-활용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)