La bibliothèque algorithm de C++ : sort, find, count
Apprenez la bibliothèque algorithm de C++ avec sort, find, count et d’autres algorithmes STL pour traiter les données.
La bibliothèque C++ <algorithm> fournit des fonctions puissantes et très utilisées pour travailler efficacement avec les vecteurs et d’autres conteneurs STL. Dans cet article, nous étudions trois des fonctions les plus courantes : sort, find et count, chacune illustrée avec des exemples pratiques.
1) La fonction sort
std::sort trie une plage (comme un vecteur ou un tableau) par défaut en ordre croissant. Sa complexité moyenne est d’environ O(n log n).
Utilisation de base
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v = {30, 10, 40, 20};
sort(v.begin(), v.end());
for (int n : v)
cout << n << " ";
}
Sortie : 10 20 30 40
Tri décroissant
sort(v.begin(), v.end(), greater<int>());
Comparateur personnalisé
sort(v.begin(), v.end(), [](int a, int b) {
return a % 10 < b % 10; // tri selon le dernier chiffre
});
2) La fonction find
std::find recherche une valeur dans une plage et retourne un itérateur
vers la première occurrence.
Si la valeur n’est pas trouvée, elle retourne l’itérateur end().
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v = {10, 20, 30, 40};
auto it = find(v.begin(), v.end(), 30);
if (it != v.end())
cout << "Trouvé : " << *it;
else
cout << "Non trouvé !";
}
Recherche dans un tableau de chaînes
vector<string> names = {"Alice", "Emma", "Jean"};
auto it = find(names.begin(), names.end(), "Emma");
3) La fonction count
std::count permet de compter combien de fois une valeur apparaît dans une plage.
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v = {10, 20, 20, 30, 20};
int c = count(v.begin(), v.end(), 20);
cout << "Nombre de 20 : " << c;
}
Sortie : Nombre de 20 : 3
Comptage conditionnel (count_if)
int c = count_if(v.begin(), v.end(), [](int x) {
return x % 2 == 0; // compter les nombres pairs
});
4) Exemple pratique — Comptage de mots
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int main() {
vector<string> words = {"cpp", "java", "cpp", "python", "cpp"};
int cppCount = count(words.begin(), words.end(), "cpp");
cout << "\"cpp\" apparaît " << cppCount << " fois";
}
5) Utilisation combinée de sort, find et count
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v = {50, 20, 10, 20, 40};
sort(v.begin(), v.end()); // 10 20 20 40 50
auto it = find(v.begin(), v.end(), 20); // première occurrence de 20
int c = count(v.begin(), v.end(), 20); // compte le nombre de 20
cout << "Premier 20 trouvé à l’indice : " << (it - v.begin()) << endl;
cout << "Nombre total de 20 : " << c;
}
6) Quand utiliser laquelle ?
- sort : pour tout type de tri
- find : pour rechercher rapidement une valeur
- count : pour compter le nombre d’occurrences d’une valeur
La bibliothèque <algorithm> est l’un des outils les plus puissants de la STL, permettant d’effectuer des opérations performantes sur les conteneurs.
7) TL;DR
- sort : fonction de tri O(n log n)
- find : recherche une valeur et retourne un itérateur
- count : compte le nombre d’occurrences
- count_if : comptage conditionnel
- Exemples compatibles avec Visual Studio 2022 et GCC.
Articles connexes
Aperçu de la bibliothèque standard C++
Découvrez la bibliothèque standard C++, les conteneurs STL, les algorithmes et les composants essentiels du développement moderne.
Éléments uniques avec std::set et std::multiset en C++
Apprenez à utiliser std::set et std::multiset en C++ pour gérer des éléments uniques et des collections ordonnées.
Itérateurs et leur utilisation dans la STL en C++
Apprenez les itérateurs en C++ et leur utilisation avec les conteneurs et algorithmes STL pour parcourir efficacement les données.
Utilisation de std::vector en C++
Apprenez à utiliser std::vector en C++ pour gérer des tableaux dynamiques avec des exemples pratiques.