La bibliothèque standard C++ est un outil puissant qui est souvent sous-estimé. Tout le monde connaît vector, map et string, mais la STL (Standard Template Library) ne concerne pas seulement les conteneurs de base.
Aujourd'hui, Kodik vous montrera des endroits peu connus, mais des astuces STL vraiment utilesqui vont booster votre code, le rendre plus propre et plus court 💪

🔍 1. std::accumulate — agrégation compacte
Au lieu d'un cycle manuel pour calculer la somme des nombres :
int sum = 0;
for (int x : v) sum += x;Vous pouvez simplement :
#include <numeric>
int sum = std::accumulate(v.begin(), v.end(), 0);
🌀 2. std::transform — approche fonctionnelle
Besoin d'appliquer l'opération à chaque élément ? N'écrivez pas de boucle — utilisez transform :
std::vector<int> result;
std::transform(v.begin(), v.end(), std::back_inserter(result), [](int x) {
return x * 2;
});🧩 3. std::any et std::variant — stockage de tous types
std::variant<int, std::string> val = "Hello";
if (std::holds_alternative<std::string>(val)) {
std::cout << std::get<std::string>(val);
}🧱 4. std::unordered_map et std::unordered_set — la puissance des tables de hachage
Lorsque vous utilisez les std::map et std::set habituels, sous le capot, arbre binaire équilibré (généralement un arbre rouge-noir). Cela signifie que les opérations d'insertion, de recherche et de suppression prennent O(log n) temps.
Mais std::unordered_map et std::unordered_set sont organisés différemment : ils utilisent tableaux de hachage. Grâce à cela, ils fournissent la complexité moyenne des opérations — O(1). Cela les rend beaucoup plus rapide dans la plupart des applications, en particulier avec de grandes quantités de données.
🔥 Exemple :
#include <unordered_map>
#include <string>
#include <iostream>
int main() {
std::unordered_map<std::string, int> scores;
scores["Alice"] = 90;
scores["Bob"] = 75;
std::cout << scores["Alice"]; // 90
}
Contrairement à std::map, unordered_map ne garantit pas l'ordre des éléments. Si l'ordre de stockage des données n'a pas d'importance pour vous, utilisez unordered_versions pour une performance maximale.
🧠 Quand l'utiliser ?
Besoin de maintenir l'ordre ? | Utilisez |
|---|---|
Oui |
|
Non |
|
🧵 5. std::ranges (à partir de C++20)
#include <ranges>
auto result = v
| std::views::filter([](int x) { return x % 2 == 0; })
| std::views::transform([](int x) { return x * x; });Permet d'écrire des chaînes d'opérations - belles et compactes.
🤯 Bonus : ce qu'il y a d'autre dans STL
std::optional- une alternative sûre aux « valeurs magiques »std::span— transfert pratique des plagesstd::bitset- travail compact avec les drapeauxstd::invoke— appel de toutes les fonctions, y compris les fonctions membres
Si vous voulez apprendre à utiliser STL dans des tâches réelles, téléchargez annexe Code. Vous y trouverez :
🧠 Leçons interactives de C++
✅ Exercices avec vérification des solutions
💬 Communauté des développeurs
Apprenez à programmer non pas seul, mais avec le soutien et notre Canal Telegram 💙
