C++ STL에는 std::for_each와 같은 유용한 일반 함수가 포함되어 있습니다. 불행히도, 특히 적용하려는 펑터가 특정 기능에 고유한 경우 사용하기가 상당히 복잡할 수 있습니다. 따라서 생성할 이 함수는 해당 네임스페이스에서 한 곳에서 사용되는 것입니다. 이에 대한 해결책은 익명 함수를 사용하는 것입니다.
C++는 익명 함수 생성을 허용하기 위해 C++11에 람다 표현식을 도입했습니다.
예시
#include<iostream>
#include<vector>
#include <algorithm> // for_each
using namespace std;
int main() {
vector<int> myvector;
myvector.push_back(1);
myvector.push_back(2);
myvector.push_back(3);
for_each(myvector.begin(), myvector.end(), [](int x) {
cout << x*x << endl;
});
} 출력
이것은 출력을 제공합니다 -
1 4 9
(int x)는 람다 식이 호출될 인수를 정의하는 데 사용됩니다. []는 지역 범위에서 람다의 내부 범위로 변수를 전달하는 데 사용되며, 이를 변수 캡처라고 합니다. 이러한 표현식은 단순하면 유형을 자동으로 추론할 수 있습니다. 다음 구문을 사용하여 유형 정보를 명시적으로 제공할 수도 있습니다. -
구문
[](int x) -> double {
return x/2.0;
} C++ 람다에 대해 자세히 알아보려면 이 StackOverflow 스레드로 이동하십시오. – https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11