Heim > Artikel > Backend-Entwicklung > Wie erstelle und verwende ich generische C++-Funktionszeiger?
Ein generischer Funktionszeiger ist ein Zeiger auf Funktionen unterschiedlichen Typs und unterschiedlicher Anzahl von Parametern in C++. Das Erstellen eines generischen Funktionszeigers erfordert die Verwendung einer Vorlage, die den Rückgabewerttyp der Funktion und ein Tupel von Parametertypen angibt. Generische Funktionszeiger können mit der folgenden Syntax verwendet werden: Deklarieren Sie einen Funktionszeiger, weisen Sie dem Funktionszeiger eine Funktion zu und rufen Sie die Funktion auf, auf die der Funktionszeiger zeigt. In der Praxis werden generische Funktionszeiger zur Implementierung von Vergleichsfunktionen von Sortieralgorithmen verwendet, die Elemente unterschiedlichen Typs sortieren können.
So erstellen und verwenden Sie generische C++-Funktionszeiger
In C++ ist ein Funktionszeiger ein Zeiger auf eine Funktion. Generische Funktionszeiger können auf Funktionen unterschiedlichen Typs und unterschiedlicher Anzahl von Parametern verweisen.
Erstellen Sie einen generischen Funktionszeiger
Um einen generischen Funktionszeiger zu erstellen, können Sie die Vorlage verwenden:
template <typename Ret, typename... Args> using GenericFunctionPointer = Ret (*)(Args...);
wobei:
Ret
der Rückgabewerttyp der Funktion ist. Ret
是函数的返回值类型。Args
Args
ist ein Tupel von Parametertypen der Funktion. using FuncPtr = std::string (*)(int);Verwenden eines generischen Funktionszeigers Sie können einen generischen Funktionszeiger mit der folgenden Syntax verwenden:
FuncPtr funcPtr; // 声明函数指针 // 将函数赋值给函数指针 funcPtr = [](int x) { return std::to_string(x); }; // 调用通过函数指针指向的函数 std::string result = funcPtr(42);Praktischer Fall Stellen Sie sich einen Sortieralgorithmus vor, der Elemente unterschiedlichen Typs (z. B. Ganzzahlen oder Zeichenfolgen) sortieren kann. Mit einem generischen Funktionszeiger können wir eine Vergleichsfunktion implementieren, die zwei Elemente vergleicht und je nach Größenverhältnis der Elemente eine Ganzzahl zurückgibt.
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) { // 使用比较函数对数组进行排序 // ... }Mit dieser Implementierung können wir ein Array von Ganzzahlen wie folgt sortieren:
int arr[] = {3, 1, 4, 2}; sort(arr, 4, compare<int>);oder ein Array von Zeichenfolgen: 🎜
std::string arr[] = {"apple", "banana", "cherry"}; sort(arr, 3, compare<std::string>);
Das obige ist der detaillierte Inhalt vonWie erstelle und verwende ich generische C++-Funktionszeiger?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!