Bereitstellung einer Swap-Funktion für STL-Algorithmen
Um die Verwendung einer benutzerdefinierten Swap-Methode in STL-Algorithmen zu ermöglichen, gibt es mehrere Ansätze:
Mitglied Swap:
Kostenlos -Stehende Swap-Funktion:
Explizite Spezialisierung von std::swap:
Empfohlener Ansatz:
Der empfohlene Ansatz ist die Verwendung einer freistehenden Swap-Funktion im Gleicher Namensraum wie die Klasse. Dies ermöglicht die Verwendung von ADL (Argument-Dependent Lookup) beim Aufruf von Swap innerhalb von STL-Algorithmen.
Beispiel:
namespace Foo { class Bar{}; // dummy void swap(Bar& lhs, Bar& rhs) { // ... } }
Verwendung der obigen Swap-Funktion innerhalb eines STL-Algorithmus:
template<class T> void foo(T& lhs, T& rhs) { using std::swap; // enable 'std::swap' to be found // if no other 'swap' is found through ADL // some code ... swap(lhs, rhs); // unqualified call, uses ADL and finds a fitting 'swap' // or falls back on 'std::swap' // more code ... }
Das obige ist der detaillierte Inhalt vonWie kann ich eine benutzerdefinierte Swap-Funktion zur Verwendung mit STL-Algorithmen bereitstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!