Chargement...

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 ?

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