>  기사  >  백엔드 개발  >  C++ Lambda 표현식은 어떻게 결과를 반환합니까?

C++ Lambda 표현식은 어떻게 결과를 반환합니까?

WBOY
WBOY원래의
2024-06-04 10:24:57423검색

C++ 람다 표현식은 return 문을 사용하여 결과를 반환할 수 있습니다. 구문: [capture-list] (매개변수) -> return-type { // 함수 본문 // return 표현식 } 실용적인 전투: 람다 표현식을 사용하여 필터링할 수 있습니다. 홀수를 계산하고 그 합을 계산합니다: int sum_odd = std::accumulate(numbers.begin(), Numbers.end(), 0, [](int sum, int num) { if (숫자 % 2 == 1) { 합계 + 숫자를 반환합니다. } 반환 금액; });

C++ Lambda 表达式如何返回结果?

C++ 람다 표현식: 결과 반환 메커니즘

Lambda 표현식은 짧고 간단한 코드 블록을 나타내는 데 사용할 수 있는 C++의 익명 함수입니다. 구문에 return 문을 사용하여 Lambda 표현식으로 결과를 반환할 수 있습니다. return 语句。

语法:

[capture-list] (parameters) -> return-type {
  // 函数体
  return expression; // 返回结果
};

实战案例:

假设我们有一个容器 numbers,我们需要返回该容器中所有奇数的总和。我们可以使用 Lambda 表达式如下:

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};

  // 使用 Lambda 表达式过滤奇数
  int sum_odd = std::accumulate(numbers.begin(), numbers.end(), 0, [](int sum, int num) {
    if (num % 2 == 1) {
      return sum + num;
    }
    return sum;
  });

  std::cout << "奇数总和:" << sum_odd << std::endl;

  return 0;
}

说明:

  • 在此 Lambda 表达式中,[sum, num] 是捕获列表,它包含我们需要的外部变量。
  • (sum, num) 是参数列表,它接收两个参数:sum 为累加值,num 为容器中的当前值。
  • -> int 指定了返回类型,在本例中为 int
  • 函数体使用条件语句检查 num 是否为奇数,如果是,则将其添加到 sum 中并返回,否则返回 sum
  • 最后,std::accumulate 函数将 Lambda 表达式用作二元运算符,将容器中的所有奇数累加到 sum_odd
구문: ​​

rrreee🎜🎜실제 사례: 🎜🎜🎜 숫자 컨테이너가 있고 컨테이너에 있는 모든 홀수의 합계를 반환해야 한다고 가정합니다. 다음과 같이 Lambda 표현식을 사용할 수 있습니다. 🎜rrreee🎜🎜설명: 🎜🎜
  • 이 Lambda 표현식에서 [sum, num]는 외부에 필요한 항목이 포함된 캡처 목록입니다. 변수. 🎜
  • (sum, num)는 두 개의 매개변수를 받는 매개변수 목록입니다. sum은 누적된 값이고 num은 컨테이너의 값 현재 값입니다. 🎜
  • -> int는 반환 유형을 지정합니다(이 경우 int). 🎜
  • 함수 본문은 조건문을 사용하여 num이 홀수인지 확인합니다. 그렇다면 sum에 추가하여 반환하고, 그렇지 않으면 sum을 반환합니다. 코드 코드>. 🎜<li>마지막으로 <code>std::accumulate 함수는 Lambda 표현식을 이진 연산자로 사용하여 컨테이너의 모든 홀수를 sum_odd에 누적합니다. 🎜🎜🎜위 방법을 사용하면 람다 표현식을 사용하여 함수의 결과를 쉽게 반환할 수 있습니다. 🎜

위 내용은 C++ Lambda 표현식은 어떻게 결과를 반환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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