{}const=>[]async()letfn</>var
Développement

🧰 STL : astuces cachées de la bibliothèque standard C++

STL n'est pas seulement un vecteur et une carte. Nous analysons des outils utiles, mais rarement utilisés, tels que transform, accumulate, variant, ranges.

К

Kodik

Auteur

3 min de lecture

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);
🔥 100 000+ étudiants déjà avec nous

Marre de lire la théorie ?
Il est temps de coder !

Kodik — une appli où tu apprends à coder par la pratique. Mentor IA, leçons interactives, projets réels.

🤖 IA 24/7
🎓 Certificats
💰 Gratuit
🚀 Commencer
Ont rejoint aujourd'hui

🌀 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

std::map, std::set

Non

std::unordered_map, std::unordered_set

🧵 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 plages

  • std::bitset - travail compact avec les drapeaux

  • std::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 💙

🎯Arrête de reporter

Tu as aimé l'article ?
Place à la pratique !

Avec Kodik, tu ne lis pas seulement — tu codes immédiatement. Théorie + pratique = vraies compétences.

Pratique instantanée
🧠L'IA explique le code
🏆Certificat

Sans inscription • Sans carte