Maison > développement back-end > C++ > Comment puis-je trier un vecteur de paires en fonction du deuxième élément en C ?

Comment puis-je trier un vecteur de paires en fonction du deuxième élément en C ?

Mary-Kate Olsen
Libérer: 2024-12-10 22:35:11
original
655 Les gens l'ont consulté

How Can I Sort a Vector of Pairs Based on the Second Element in C  ?

Tri des vecteurs de paires à l'aide du deuxième élément

Le tri des vecteurs de paires en fonction du deuxième élément est une tâche de programmation courante. Cet article explore différentes méthodes pour y parvenir en utilisant les composants STL existants et std::less.

Méthode 1 : Comparateur personnalisé

Un comparateur personnalisé est une approche courante. Créez une structure avec une fonction Operator() remplacée qui compare les paires en fonction de leurs seconds éléments. Par exemple :

struct sort_pred {
    bool operator()(const std::pair<int, int>& left, const std::pair<int, int>& right) {
        return left.second < right.second;
    }
};
Copier après la connexion

Ensuite, appelez sort() avec ce comparateur comme troisième argument :

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

Méthode 2 : Expression Lambda (C 11)

En C 11, vous pouvez utiliser une expression lambda pour définir la comparaison function :

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

Méthode 3 : Comparateur générique basé sur un modèle (C 11)

Pour le code réutilisable, créez un comparateur générique 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

Ensuite, appelez sort() avec ce modèle basé sur un modèle comparateur :

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

Recommandation

Pour la réutilisabilité, le comparateur générique basé sur un modèle est une option puissante. Cependant, par souci de simplicité, écrire un comparateur personnalisé ou une expression lambda est souvent suffisant.

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