Maison >développement back-end >C++ >Le tri de bibliothèque standard peut-il gérer le tri des types définis par l'utilisateur ?

Le tri de bibliothèque standard peut-il gérer le tri des types définis par l'utilisateur ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-16 07:25:03537parcourir

Can Standard Library Sort Handle Sorting User-Defined Types?

Tri des types définis par l'utilisateur avec le tri de bibliothèque standard

Tri d'un vecteur de types définis par l'utilisateur (UDT) par une variable membre spécifique est une tâche commune. La fonction de tri de bibliothèque standard peut effectuer cette opération si certains critères sont remplis.

Le tri de bibliothèque standard peut-il gérer le tri UDT ?

Oui, le tri de bibliothèque standard peut être utilisé pour organiser les UDT en fonction d'une variable membre. Cela nécessite deux éléments clés :

  • Surcharge d'opérateur : L'UDT doit implémenter l'opérateur < (inférieur à) qui définit les critères de comparaison.
  • Constructeur de copie : L'UDT doit avoir un constructeur de copie (généré par le compilateur ou personnalisé) pour permettre le tri et la copie des objets.

Exemple avec opérateur Surcharge :

struct MyType {
    int a;
    int b;

    bool operator<(const MyType& other) const {
        // Custom comparison logic based on 'a'
    }
};

Exemple avec une fonction de commande personnalisée :

Vous pouvez également transmettre une fonction de commande personnalisée comme argument à sort() au lieu d'implémenter l'opérateur <:

bool compareMyType(const MyType& t1, const MyType& t2) {
    // Custom comparison logic based on 'a'
}

Dans les deux cas, vous pouvez trier votre vecteur UDT en utilisant :

std::sort(moo.begin(), moo.end()); // for operator overload
std::sort(moo.begin(), moo.end(), compareMyType); // for custom function

Notez que la logique de comparaison (basée sur a) doit être cohérente avec l'ordre de tri que vous désirez (par exemple, du plus bas au plus élevé, du plus élevé au plus bas).

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn