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

C++11에서 람다 표현식이란 무엇입니까?


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