>  기사  >  백엔드 개발  >  함수 포인터를 C++ 람다 표현식으로 바꾸는 방법은 무엇입니까?

함수 포인터를 C++ 람다 표현식으로 바꾸는 방법은 무엇입니까?

PHPz
PHPz원래의
2024-04-17 16:24:02377검색

함수 포인터를 람다 식으로 바꾸면 가독성이 향상되고 상용구 코드가 줄어들며 재사용성이 높아집니다. 특히 람다 식은 [캡처 목록](매개변수 목록) -> 반환 유형 {body} 구문을 사용하며, 코드 단순성과 유지 관리성을 향상시키기 위해 벡터 정렬과 같은 실제 사례에 사용할 수 있습니다.

如何用 C++ lambda 表达式替换函数指针?

함수 포인터를 C++ Lambda 표현식으로 대체

Lambda 표현식은 C++11에서 도입되었으며 익명 함수 또는 함수 포인터를 정의하는 간단한 방법을 제공합니다. 함수 포인터를 람다 식으로 바꾸면 다음과 같은 많은 이점이 있습니다.

  • 가독성 향상
  • 상용구 코드 감소
  • 코드 재사용성 향상

구문

람다 식의 구문은 다음과 같습니다.

[capture list](parameter list) -> return type { body }
  • 캡처 목록: 람다 식의 범위에서 캡처할 괄호로 묶인 쉼표로 구분된 변수 목록입니다.
  • 매개변수 목록: 괄호 안의 쉼표로 구분된 매개변수 목록입니다.
  • 반환 유형: 함수의 반환 값 유형(선택 사항).
  • body: 중괄호로 묶인 함수의 본문입니다.

다음은 함수 포인터를 람다 식으로 바꾸는 예입니다.

// 函数指针方式
int compare(int a, int b) { return a - b; }

// Lambda 表达式方式
auto compare = [](int a, int b) { return a - b; };

실용 사례: 벡터 정렬

실용 사례에서 람다 식의 장점을 확인할 수 있습니다.

#include <vector>
#include <algorithm>

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

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

  // 打印排序后的向量
  for (int x : v) {
    std::cout << x << " ";
  }

  return 0;
}

In 이 경우 람다 표현식은 벡터를 정렬하는 데 사용되는 비교 함수를 정의하는 데 사용됩니다. 별도의 함수를 정의할 필요가 없고, 코드가 더 단순해지고 이해하기 쉬워졌습니다.

위 내용은 함수 포인터를 C++ 람다 표현식으로 바꾸는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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