>  기사  >  백엔드 개발  >  C++의 함수 람다 표현식에 대한 작성 사양은 무엇입니까?

C++의 함수 람다 표현식에 대한 작성 사양은 무엇입니까?

WBOY
WBOY원래의
2024-04-11 12:54:01907검색

C++ 함수 람다 표현식을 작성하기 위한 표준 구문은 다음과 같습니다. [capture](parameters) -> return_type { // Function body}, 여기서 캡처는 외부 변수 캡처이고, 매개변수는 함수 매개변수이고, return_type은 함수 반환입니다. 값 유형. 그 유형은 캡처 목록과 매개변수 목록에 따라 구분됩니다. 모든 외부 변수 캡처, 매개변수 없음: 자동 유형, 특정 외부 변수 캡처, 매개변수 없음: 자동 유형(캡처 없음), 매개변수: 함수 유형. 람다 표현식은 변수나 함수 포인터에 할당하거나 인수로 직접 전달할 수 있는 임시 함수 개체를 만드는 데 사용됩니다.

C++ 函数lambda表达式的写法规范是什么?

C++ 함수 람다 표현식 작성 사양

구문:

[capture](parameters) -> return_type {
  // 函数体
}

그중:

  • capture: 외부 변수 캡처, 선택 사항, 기본값은 [& ](모든 외부 변수 캡처) capture:捕获外部变量,可选,默认为 [&](捕获所有外部变量)
  • parameters:函数参数,可选
  • return_type:函数返回值类型,可选

Lambda 表达式类型:

Lambda 表达式属于匿名函数类型。其类型取决于捕获列表和参数列表:

  • 捕获所有外部变量,无参数:auto 类型
  • 捕获特定外部变量,无参数:auto 类型(可缩小)
  • 无捕获,有参数:functioneff33ae303261d79115a65b552404e91 类型

使用规范:

  • Lambda 表达式用于创建临时函数对象。
  • 可将其赋值给变量或函数指针,或直接作为参数传递。
  • Lambda 表达式中可访问捕获的外部变量,但不能修改它们(除非通过引用捕获)。
  • Lambda 表达式中的 this
  • parameters: 함수 매개변수, 선택 사항

return_type: 함수 반환 값 유형, 선택 사항

Lambda 표현식 유형 :

Lambda 표현식은 익명 함수 유형입니다. 유형은 캡처 목록과 매개변수 목록에 따라 다릅니다. 🎜🎜🎜모든 외부 변수 캡처, 매개변수 없음: auto 유형 🎜🎜특정 외부 변수 캡처, 매개변수 없음: auto 유형 (축소 가능) 🎜🎜 캡처 없음, 매개변수 포함: functioneff33ae303261d79115a65b552404e91 유형 🎜🎜🎜🎜사용 사양: 🎜🎜🎜🎜Lambda 표현식은 임시 함수 객체를 생성하는 데 사용됩니다. . 🎜🎜변수나 함수 포인터에 할당하거나 매개변수로 직접 전달할 수 있습니다. 🎜🎜캡처된 외부 변수는 Lambda 표현식에서 액세스할 수 있지만 수정할 수는 없습니다(참조로 캡처하지 않는 한). 🎜🎜람다 표현식의 this 포인터는 표현식이 생성된 컨텍스트를 가리킵니다. 🎜🎜🎜🎜실제 사례: 🎜🎜
// 捕获所有外部变量,无参数
auto lambda1 = []() {
  // 可以访问外部变量
  std::cout << "Lambda 1: " << x << std::endl;
};

// 捕获特定外部变量,无参数
int x = 10;
auto lambda2 = [x]() {
  // 只可以访问捕获的外部变量 x
  std::cout << "Lambda 2: " << x << std::endl;
};

// 无捕获,有参数
auto lambda3 = [](int y) {
  // 没有捕获外部变量,y 为函数参数
  std::cout << "Lambda 3: " << y << std::endl;
};

int main() {
  lambda1();
  lambda2();
  lambda3(20);

  return 0;
}
🎜🎜출력: 🎜🎜
Lambda 1: 10
Lambda 2: 10
Lambda 3: 20

위 내용은 C++의 함수 람다 표현식에 대한 작성 사양은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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