>백엔드 개발 >C++ >C++ 일반 함수 포인터를 만들고 사용하는 방법은 무엇입니까?

C++ 일반 함수 포인터를 만들고 사용하는 방법은 무엇입니까?

PHPz
PHPz원래의
2024-04-17 14:06:02424검색

일반 함수 포인터는 C++에서 다양한 유형과 매개변수 개수의 함수에 대한 포인터입니다. 일반 함수 포인터를 생성하려면 함수의 반환 값 유형과 매개변수 유형의 튜플을 지정하는 템플릿을 사용해야 합니다. 일반 함수 포인터는 다음 구문과 함께 사용할 수 있습니다: 함수 포인터를 선언하고, 함수 포인터에 함수를 할당하고, 함수 포인터가 가리키는 함수를 호출합니다. 실제 사례에서는 일반 함수 포인터를 사용하여 다양한 유형의 요소를 정렬할 수 있는 정렬 알고리즘의 비교 함수를 구현합니다.

如何创建和使用 C++ 泛型函数指针?

C++ 일반 함수 포인터를 만들고 사용하는 방법

C++에서 함수 포인터는 함수에 대한 포인터입니다. 일반 함수 포인터는 다양한 유형과 매개변수 수의 함수를 가리킬 수 있습니다.

일반 함수 포인터 만들기

일반 함수 포인터를 만들려면 다음 템플릿을 사용할 수 있습니다.

template <typename Ret, typename... Args>
using GenericFunctionPointer = Ret (*)(Args...);

여기서:

  • Ret는 함수의 반환 값 유형입니다. Ret 是函数的返回值类型。
  • Args
  • Args는 함수의 매개변수 유형으로 구성된 튜플입니다.

예를 들어 정수 값을 받고 문자열을 반환하는 함수에 대한 일반 함수 포인터를 만듭니다.

using FuncPtr = std::string (*)(int);
일반 함수 포인터 사용

다음 구문을 사용하여 일반 함수 포인터를 사용할 수 있습니다.

FuncPtr funcPtr;  // 声明函数指针
// 将函数赋值给函数指针
funcPtr = [](int x) { return std::to_string(x); };
// 调用通过函数指针指向的函数
std::string result = funcPtr(42);
실용 사례

다양한 유형(예: 정수 또는 문자열)의 요소를 정렬할 수 있는 정렬 알고리즘을 생각해 보세요. 일반 함수 포인터를 사용하여 두 요소를 비교하고 요소의 크기 관계에 따라 정수를 반환하는 비교 함수를 구현할 수 있습니다.

template <typename T>
int compare(const T& a, const T& b) {
  // 比较两个元素并返回 -1 (a < b)、0 (a == b)或 1 (a > b)
  // ...
}

template <typename T>
void sort(T* array, int length, GenericFunctionPointer<int, const T&, const T&> compareFunc) {
  // 使用比较函数对数组进行排序
  // ...
}

이 구현을 사용하면 다음과 같은 정수 배열을 정렬할 수 있습니다:

int arr[] = {3, 1, 4, 2};
sort(arr, 4, compare<int>);

또는 문자열 배열: 🎜
std::string arr[] = {"apple", "banana", "cherry"};
sort(arr, 3, compare<std::string>);

위 내용은 C++ 일반 함수 포인터를 만들고 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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