Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 람다 표현식

<시간/>

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