Maison > développement back-end > C++ > Comment trier les vecteurs de paires en fonction de leurs seconds éléments en C ?

Comment trier les vecteurs de paires en fonction de leurs seconds éléments en C ?

Susan Sarandon
Libérer: 2024-12-10 21:48:14
original
615 Les gens l'ont consulté

How to Sort Vectors of Pairs Based on Their Second Elements in C  ?

Tri des vecteurs de paires en fonction des seconds éléments

Étant donné un vecteur de paires, on peut souhaiter les organiser par ordre croissant en fonction de leur deuxièmes éléments. Tandis que la construction d'objets de fonction personnalisés accomplit cette tâche, voyons si la bibliothèque de modèles standard (STL) nous offre des méthodes plus pratiques.

Utilisation d'un comparateur personnalisé

Le troisième Le paramètre de std::sort permet de spécifier une fonction de comparaison personnalisée. Nous pouvons en définir un comme suit :

struct sort_pred {
    bool operator()(const std::pair<int, int>& left, const std::pair<int, int>& right) {
        return left.second < right.second;
    }
};

std::sort(v.begin(), v.end(), sort_pred());
Copier après la connexion

Utilisation de Lambdas en C 11 et versions ultérieures

En C 11 et versions ultérieures, les lambdas offrent une alternative compacte :

std::sort(v.begin(), v.end(), [](const std::pair<int, int>& left, const std::pair<int, int>& right) {
    return left.second < right.second;
});
Copier après la connexion

Exploiter les modèles pour Flexibilité

Pour une réutilisabilité accrue, on peut définir un comparateur basé sur un modèle :

template <class T1, class T2, class Pred = std::less<T2>>
struct sort_pair_second {
    bool operator()(const std::pair<T1, T2>& left, const std::pair<T1, T2>& right) {
        Pred p;
        return p(left.second, right.second);
    }
};
Copier après la connexion

Cela permet une flexibilité encore plus grande :

std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal