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; }