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

PHPz
Lepaskan: 2024-04-17 14:06:02
asal
419 orang telah melayarinya

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...);
Salin selepas log masuk

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);
Salin selepas log masuk
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);
Salin selepas log masuk

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

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

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan