Utiliser sort() dans la bibliothèque C++ std

Utilisation de la fonction sort() dans la bibliothèque C++ std

Introduction

La fonction sort est une fonction de la bibliothèque standard C++ qui permet de trier les éléments d’un conteneur dans l’ordre croissant ou décroissant. Elle est définie dans l’en-tête <algorithm> et prend trois arguments :

* Un itérateur de début de plage
* Un itérateur de fin de plage
* Un comparateur binaire (facultatif)

Par défaut, la fonction sort utilise le comparateur < pour trier les éléments dans l’ordre croissant. Toutefois, vous pouvez fournir votre propre comparateur pour trier les éléments selon un critère spécifique.

Syntaxe

La syntaxe de base de la fonction sort est la suivante :

cpp
void sort(ItérateurDébut, ItérateurFin);

où :

* ItérateurDébut est un itérateur pointant vers le premier élément de la plage à trier.
* ItérateurFin est un itérateur pointant vers la fin de la plage à trier.

Vous pouvez également fournir un comparateur binaire comme troisième argument pour spécifier l’ordre de tri :

cpp
void sort(ItérateurDébut, ItérateurFin, Comparateur);

où :

* Comparateur est un objet de type std::function<bool(Type1, Type2)> qui définit l’ordre de tri.

Exemples

Voici quelques exemples d’utilisation de la fonction sort :

Trier un tableau d’entiers dans l’ordre croissant

cpp
int tableau[] = {5, 3, 1, 2, 4};
std::sort(tableau, tableau + 5);

Trier une liste de chaînes dans l’ordre alphabétique décroissant

cpp
std::list<std::string> liste = {"Pomme", "Banane", "Cerise", "Datte"};
std::sort(liste.begin(), liste.end(), [](const std::string& a, const std::string& b) { return a > b; });

Trier un ensemble de paires clé-valeur par clé

cpp
std::map<std::string, int> map = {{"Pomme", 5}, {"Banane", 3}, {"Cerise", 1}, {"Datte", 2}};
std::sort(map.begin(), map.end(), [](const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) { return a.first < b.first; });

Fonctions liées

En plus de la fonction sort, la bibliothèque std fournit plusieurs autres fonctions de tri :

* std::partial_sort : Trie partiellement une plage.
* std::stable_sort : Trie une plage de manière stable.
* std::is_sorted : Vérifie si une plage est triée.
* std::sort_heap : Trie une plage en utilisant l’algorithme du tas.

Conclusion

La fonction sort est un outil puissant pour trier les éléments d’un conteneur dans un ordre spécifique. Elle est facile à utiliser et peut être utilisée pour trier une grande variété de types de données. En combinaison avec les autres fonctions de tri de la bibliothèque std, vous pouvez effectuer des opérations de tri complexes et efficaces dans vos programmes C++.

FAQs

1. Comment trier un tableau d’objets dans l’ordre croissant selon un membre ?

Vous pouvez utiliser une fonction lambda comme comparateur pour trier les objets selon un membre spécifique :

cpp
std::sort(tableau, tableau + 5, [](const Objet& a, const Objet& b) { return a.membre < b.membre; });

2. Comment trier une plage de manière stable ?

Utilisez la fonction std::stable_sort pour trier une plage de manière stable, ce qui garantit que les éléments égaux conservent leur ordre relatif :

cpp
std::stable_sort(tableau, tableau + 5);

3. Comment vérifier si une plage est triée ?

Utilisez la fonction std::is_sorted pour vérifier si une plage est triée :

cpp
if (std::is_sorted(tableau, tableau + 5)) {
// La plage est triée
}

4. Comment trier une plage en utilisant l’algorithme du tas ?

Utilisez la fonction std::sort_heap pour trier une plage en utilisant l’algorithme du tas :

cpp
std::sort_heap(tableau, tableau + 5);

5. Comment trier une plage dans l’ordre décroissant ?

Utilisez la fonction std::greater comme comparateur pour trier une plage dans l’ordre décroissant :

cpp
std::sort(tableau, tableau + 5, std::greater<int>());

6. Comment trier une plage en fonction de plusieurs critères ?

Vous pouvez créer un comparateur personnalisé qui prend en compte plusieurs critères de tri :

cpp
struct Comparateur {
bool operator()(const Objet& a, const Objet& b) {
if (a.critère1 == b.critère1) {
return a.critère2 < b.critère2;
}
return a.critère1 < b.critère1;
}
};

std::sort(tableau, tableau + 5, Comparateur());

7. Comment trier une plage inversement ?

Utilisez la fonction std::reverse pour inverser une plage après l’avoir triée :

cpp
std::sort(tableau, tableau + 5);
std::reverse(tableau, tableau + 5);

8. Comment trier une plage avec des éléments manquants ?

Utilisez la fonction std::remove pour supprimer les éléments manquants avant de trier la plage :

cpp
std::remove_if(tableau, tableau + 5, [](const int& élément) { return élément == std::numeric_limits<int>::max(); });
std::sort(tableau, tableau + 5);