>백엔드 개발 >C++ >C++ 람다 표현식의 구문 규칙은 무엇입니까?

C++ 람다 표현식의 구문 규칙은 무엇입니까?

WBOY
WBOY원래의
2024-06-01 17:33:001062검색

Lambda 표현식은 다음 구문을 사용하는 익명 함수입니다. [캡처 목록](매개변수 목록) -> 반환 유형 {함수 본문} 캡처 목록은 주변 환경에서 캡처할 변수를 지정하고, 매개변수 목록은 매개변수 목록을 지정합니다. , 반환 유형은 반환 유형을 지정하고 함수 본문은 함수 본문을 정의합니다. 캡처 변수는 참조로 캡처되며, 캡처 목록, 매개변수 목록, 반환 유형을 통해 유형을 유추할 수 있습니다.

C++ Lambda 表达式的语法规则是什么?

C++ 람다 표현식의 구문 규칙

람다 표현식은 명시적인 함수를 정의하지 않고도 호출 가능한 객체를 생성할 수 있는 익명 함수입니다. 구문은 다음과 같습니다.

[capture list] (parameter list) -> return type { function body }

위치:

  • capture list: 주변 환경에서 캡처할 변수 목록을 지정합니다.
  • 매개변수 목록: 람다 표현식의 매개변수 목록을 지정합니다.
  • return type: 람다 표현식의 반환 유형을 지정합니다. 생략할 수 있으며, 이 경우 람다 식이 void를 반환합니다.
  • 함수 본문: 람다 표현식의 함수 본문을 정의합니다.

다음은 몇 가지 예입니다.

// Capture 变量 x 并返回 x 的平方
auto square = [](int x) { return x * x; };

// 捕获变量 y 并返回 y 的立方
auto cube = [&](int y) { return y * y * y; };

참고:

  • Lambda 표현식은 C++11 이상에서 사용할 수 있습니다.
  • 람다 표현식의 캡처된 변수는 캡처된 값이 명시적으로 지정되지 않는 한 참조로 캡처됩니다.
  • 캡처 목록, 인수 목록, 반환 유형을 기반으로 람다 표현식의 유형을 추론할 수 있습니다.

실제 사례

다음은 람다 표현식을 사용한 간단한 예입니다.

#include <iostream>
#include <vector>

using namespace std;

int main() {
  // 使用 lambda 表达式对向量中的每个元素平方
  vector<int> numbers = {1, 2, 3, 4, 5};
  for_each(numbers.begin(), numbers.end(), [](int& num) { num *= num; });

  // 使用 lambda 表达式对向量进行排序
  sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; });

  // 打印排序后的向量
  for (int num : numbers) {
    cout << num << " ";
  }
  cout << endl;

  return 0;
}

위 내용은 C++ 람다 표현식의 구문 규칙은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.