Maison >développement back-end >C++ >Comment puis-je fournir une fonction d'échange personnalisée à utiliser avec les algorithmes STL ?
Fournir une fonction d'échange pour les algorithmes STL
Pour activer l'utilisation d'une méthode d'échange personnalisée dans les algorithmes STL, il existe plusieurs approches :
Membre Swap :
Gratuit -Fonction d'échange permanent :
Spécialisation explicite de std::swap:
Approche recommandée :
L'approche recommandée consiste à utiliser une fonction d'échange autonome dans le même espace de noms que le classe. Cela permet l'utilisation de l'ADL (Argument-Dependent Lookup) lors de l'appel de swap dans des algorithmes STL.
Exemple :
namespace Foo { class Bar{}; // dummy void swap(Bar& lhs, Bar& rhs) { // ... } }
Utilisation de la fonction swap ci-dessus dans un algorithme STL :
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 ... }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!