Maison >développement back-end >C++ >Comment trier les vecteurs de paires en fonction de leurs seconds éléments en 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());
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; });
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); } };
Cela permet une flexibilité encore plus grande :
std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
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!