Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mencipta dan menggunakan petunjuk fungsi generik C++?

Bagaimana untuk mencipta dan menggunakan petunjuk fungsi generik C++?

PHPz
PHPzasal
2024-04-17 14:06:02452semak imbas

Penuding fungsi generik ialah penunjuk kepada fungsi pelbagai jenis dan bilangan parameter dalam C++. Mencipta penuding fungsi generik memerlukan penggunaan templat, yang menentukan jenis nilai pulangan fungsi dan tuple jenis parameter. Penunjuk fungsi generik boleh digunakan dengan sintaks berikut: mengisytiharkan penuding fungsi, menetapkan fungsi kepada penuding fungsi dan memanggil fungsi yang ditunjuk oleh penuding fungsi. Dalam kes praktikal, penunjuk fungsi generik digunakan untuk melaksanakan fungsi perbandingan bagi algoritma pengisihan, yang boleh mengisih unsur jenis yang berbeza.

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

Cara mencipta dan menggunakan penunjuk fungsi generik C++

Dalam C++, penunjuk fungsi ialah penunjuk kepada fungsi. Penunjuk fungsi generik boleh menunjuk kepada fungsi pelbagai jenis dan bilangan parameter.

Buat penunjuk fungsi generik

Untuk mencipta penunjuk fungsi generik, anda boleh menggunakan templat:

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

di mana:

  • Ret ialah jenis nilai pulangan bagi fungsi tersebut. Ret 是函数的返回值类型。
  • Args
  • Args ialah tuple jenis parameter fungsi.

Sebagai contoh, buat penuding fungsi generik kepada fungsi yang menerima nilai integer dan mengembalikan rentetan:

using FuncPtr = std::string (*)(int);
Menggunakan Penunjuk Fungsi Generik

Anda boleh menggunakan penuding fungsi generik menggunakan sintaks berikut:

Kes Praktikal

Pertimbangkan algoritma pengisihan yang boleh mengisih unsur pelbagai jenis (seperti integer atau rentetan). Kita boleh menggunakan penuding fungsi generik untuk melaksanakan fungsi perbandingan yang membandingkan dua elemen dan mengembalikan integer, bergantung pada hubungan saiz elemen.

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

Menggunakan pelaksanaan ini, kita boleh mengisih tatasusunan integer seperti ini:

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) {
  // 使用比较函数对数组进行排序
  // ...
}

atau tatasusunan rentetan: 🎜
int arr[] = {3, 1, 4, 2};
sort(arr, 4, compare<int>);

Atas ialah kandungan terperinci Bagaimana untuk mencipta dan menggunakan petunjuk fungsi generik C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn