0Pricing
C++ Academy · Leçon

std::map

Stockage ordonné de paires clé-valeur

std::map est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que std::map ?

std::map stocke des paires clé-valeur triées par clé. Chaque clé est unique, et les recherches, insertions et suppressions s'effectuent en temps logarithmique.

  • Les clés sont conservées dans un ordre trié.
  • La structure repose sur un arbre binaire de recherche équilibré.
#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> ages;
    ages["Alice"] = 30;
    ages["Bob"] = 25;
    std::cout << "Alice is " << ages["Alice"] << '\n';
    return 0;
}

Insérer des éléments

Vous pouvez insérer des éléments avec operator[], insert() ou emplace(). Utiliser [] avec une clé absente la crée avec une valeur par défaut.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m;
    m["one"] = 1;
    m.insert({"two", 2});
    m.emplace("three", 3);
    std::cout << m.size() << " entries\n";
    return 0;
}

Parcours dans l'ordre trié

Parcourir un std::map visite les clés dans l'ordre croissant. Chaque élément est un std::pair dont .first contient la clé et .second la valeur.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"banana", 3}, {"apple", 5}, {"cherry", 1}};
    for (const auto& p : m) {
        std::cout << p.first << " = " << p.second << '\n';
    }
    return 0;
}

Rechercher des clés

Utilisez find() pour rechercher une clé en toute sécurité. La fonction renvoie un itérateur vers l'élément, ou end() si la clé est introuvable.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"x", 10}, {"y", 20}};
    auto it = m.find("y");
    if (it != m.end()) {
        std::cout << "Found y = " << it->second << '\n';
    } else {
        std::cout << "Not found\n";
    }
    return 0;
}

Vérifier l'existence

Pour vérifier qu'une clé existe sans la créer, utilisez count() (qui renvoie 0 ou 1) ou contains() en C++20.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"a", 1}};
    std::cout << m.count("a") << '\n';
    std::cout << m.count("z") << '\n';
    return 0;
}

Mettre à jour les valeurs

Réaffecter une clé met à jour sa valeur sur place. La structure map ne conserve qu'une seule valeur par clé.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> score;
    score["player"] = 10;
    score["player"] += 5;
    std::cout << score["player"] << '\n';
    return 0;
}

Supprimer des éléments

erase() supprime un élément par sa clé ou par son itérateur. Avec une clé, la fonction renvoie le nombre d'éléments supprimés.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"a", 1}, {"b", 2}, {"c", 3}};
    m.erase("b");
    std::cout << m.size() << " left\n";
    for (const auto& p : m) std::cout << p.first << ' ';
    std::cout << '\n';
    return 0;
}

Utiliser at()

at() renvoie une référence vers la valeur associée à une clé et lève std::out_of_range si la clé est absente. Contrairement à [], cette fonction n'insère jamais d'élément.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"k", 42}};
    std::cout << m.at("k") << '\n';
    std::cout << "size: " << m.size() << '\n';
    return 0;
}

Compter la fréquence des mots

Une utilisation classique de std::map consiste à compter des occurrences. L'opérateur [] initialise par défaut les nouvelles clés à 0, donc ++ fonctionne directement.

#include <iostream>
#include <map>
#include <string>

int main() {
    std::string words[] = {"cat", "dog", "cat", "bird", "dog", "cat"};
    std::map<std::string, int> freq;
    for (const auto& w : words) freq[w]++;
    for (const auto& p : freq) std::cout << p.first << ": " << p.second << '\n';
    return 0;
}

Liaisons structurées

C++17 permet de décomposer chaque paire au moyen de liaisons structurées, en donnant des noms lisibles à la clé et à la valeur.

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> m{{"red", 1}, {"green", 2}};
    for (const auto& [name, value] : m) {
        std::cout << name << " -> " << value << '\n';
    }
    return 0;
}

Vérifier si la structure est vide

empty() indique si la structure map ne contient aucun élément, et clear() supprime tout en une seule fois.

#include <iostream>
#include <map>

int main() {
    std::map<int, int> m{{1, 1}, {2, 4}};
    std::cout << std::boolalpha << m.empty() << '\n';
    m.clear();
    std::cout << m.empty() << '\n';
    return 0;
}

Vérification rapide

Vérifiez votre compréhension de l'ordre de std::map.

Récapitulatif

Vous avez appris que std::map :

  • stocke des clés uniques et triées associées à des valeurs
  • prend en charge insert, [], find, count, at et erase
  • parcourt les éléments dans l'ordre croissant des clés, sous forme de paires que vous pouvez décomposer avec les liaisons structurées

Ensuite, vous découvrirez std::set, qui permet de stocker uniquement des valeurs uniques et triées.

Questions Fréquemment Posées

La leçon « std::map » est-elle gratuite ?

Oui — le texte complet de « std::map » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « std::map » ?

Stockage ordonné de paires clé-valeur Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « std::map » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. std::map
  2. std::set
  3. multimap et multiset
  4. Comparateurs personnalisés
← Retour à C++ Academy