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