>  기사  >  백엔드 개발  >  C++ 람다 표현식과 기존 함수의 차이점은 무엇입니까?

C++ 람다 표현식과 기존 함수의 차이점은 무엇입니까?

王林
王林원래의
2024-06-05 12:52:57493검색

C++ 람다 표현식과 기존 함수의 차이점 람다 표현식과 기존 함수의 주요 차이점은 다음과 같습니다. 익명성: 람다 표현식은 익명이며 함수 이름이 필요하지 않습니다. 구문: 람다 식은 대괄호와 괄호를 사용하여 표현되며 기존 함수는 표준 함수 구문을 사용합니다. 캡처 목록: 람다 표현식은 캡처 목록을 사용하여 외부 변수에 액세스할 수 있는 반면, 기존 함수는 명시적으로 전달된 매개 변수에만 액세스할 수 있습니다. 유형 추론: 람다 표현식은 유형 추론을 지원하는 반면, 기존 함수에는 명시적 유형이 필요합니다.

C++ Lambda 表达式与传统函数有什么区别?

C++ 람다 표현식과 기존 함수의 차이점

소개

Lambda 표현식은 C++에 도입된 강력한 익명 함수로, 기존 함수와 기능은 비슷하지만 구문은 더 간단합니다. 이 문서에서는 람다 식과 기존 함수 간의 주요 차이점을 살펴보고 이러한 차이점을 설명하는 실제 예제를 제공합니다.

익명성

가장 큰 차이점 중 하나는 람다 표현식이 익명이므로 이름이 없다는 것입니다. 대조적으로, 전통적인 함수는 호출되기 전에 이름을 선언해야 합니다.

Syntax

lambda 식은 아래와 같이 대괄호와 괄호를 사용하여 표현됩니다.

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

기존 함수는 다음 구문을 사용합니다.

return-type function-name(parameters) { function-body };

Capture list

lambda 식은 캡처 목록을 사용할 수 있습니다. 외부 범위의 변수에 액세스합니다. 기존 함수는 명시적으로 전달되지 않는 한 외부 변수에 액세스할 수 없습니다.

유형 추론

lambda 표현식은 유형 추론을 지원합니다. 즉, 컴파일러가 람다의 반환 유형과 매개변수 유형을 자동으로 추론할 수 있습니다. 기존 함수에는 명시적인 유형 지정이 필요합니다.

실용 사례

예 1: 벡터 정렬

람다 표현식을 사용하여 정수 벡터를 오름차순으로 정렬:

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> v = {3, 1, 4, 2};

  std::sort(v.begin(), v.end(), [](int a, int b) { return a < b; });

  for (int num : v) {
    std::cout << num << " ";
  }
  std::cout << std::endl;

  return 0;
}

예 2: 평균 계산

람다 표현식을 사용하여 부동 소수점 숫자 계산 평균 벡터:

#include <vector>
#include <numeric>

int main() {
  std::vector<float> v = {2.5, 3.1, 4.2, 1.7};

  float avg = std::accumulate(v.begin(), v.end(), 0.0, [](float a, float b) { return a + b; }) / v.size();

  std::cout << "Average: " << avg << std::endl;

  return 0;
}

결론

람다 식은 기존 함수와 유사점과 차이점이 있습니다. 람다 표현식은 익명이고 유형이 유추되며 외부 변수를 캡처할 수 있어 보다 간결하고 유연한 함수 작성 방법을 제공합니다. 람다 식은 일회성 함수를 빠르게 생성하거나 외부 변수를 처리해야 하는 시나리오에 탁월한 선택입니다.

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

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