Tri des types définis par l'utilisateur avec le tri de la bibliothèque standard
Question :
La norme peut-elle La fonction de tri de la bibliothèque peut être utilisée pour trier un vecteur de structures définies par l'utilisateur en fonction d'un champ spécifique dans le structs ?
Exemple :
struct MyType { int a; int b; }; vector<MyType> moo; // Insert data into moo... // Sort moo by the value of the 'a' field
Réponse :
Oui, la fonction de tri de bibliothèque standard peut gérer ce scénario si le type défini par l'utilisateur répond à des exigences spécifiques :
Mise en œuvre :
struct MyType { int a; int b; bool operator<(const MyType& other) const { // Implementation that compares the 'a' fields } // Copy constructor MyType(const MyType& other) : a(other.a), b(other.b) { } // Other constructors... };
Approche alternative utilisant une fonction de commande :
En cas de surcharge du l'opérateur de comparaison n'est pas réalisable, une fonction de tri ou un foncteur peut être utilisé à la place comme troisième argument du tri fonction.
bool type_is_less(const MyType& t1, const MyType& t2) { // Comparison logic } std::sort(c.begin(), c.end(), type_is_less);
Cette approche peut être bénéfique dans les cas où :
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!