0Pricing
C++ Academy · Leçon

Un compteur de fréquences des mots

Compter les occurrences de chaque mot dans un fichier texte avec std::map

Un compteur de fréquences des mots est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.

Objectif du projet

Lisez un fichier texte et affichez chaque mot distinct avec son nombre d'occurrences. C'est un problème classique que l'on résout proprement avec std::map ou std::unordered_map.

En-têtes requis

Les entrées-sorties de fichiers, les chaînes de caractères et un conteneur associatif.

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

Lire les mots un par un

L'opérateur d'extraction >> lit les jetons séparés par des espaces, ce qui est parfait pour les mots bruts.

std::ifstream file("book.txt");
std::map<std::string, int> counts;
std::string word;
while (file >> word) {
    counts[word]++;
}

Normaliser les mots

Convertissez chaque mot en minuscules afin que « Hello » et « hello » soient comptés comme un seul et même mot.

#include <algorithm>
std::transform(word.begin(), word.end(), word.begin(),
    [](unsigned char c) { return std::tolower(c); });

Retirer la ponctuation

Retirez la ponctuation au début et à la fin de chaque mot.

while (!word.empty() && !std::isalpha(word.front())) word.erase(0,1);
while (!word.empty() && !std::isalpha(word.back())) word.pop_back();

Afficher les occurrences

Parcourez la map et affichez chaque paire. std::map parcourt les éléments dans l'ordre trié des clés.

for (const auto& [w, n] : counts) {
    std::cout << w << ": " << n << "\n";
}

Trier par fréquence

Pour afficher les éléments par fréquence plutôt que par ordre alphabétique, copiez-les dans un vector et triez-le.

std::vector<std::pair<std::string, int>> entries(counts.begin(), counts.end());
std::sort(entries.begin(), entries.end(),
    [](auto& a, auto& b) { return a.second > b.second; });

Les N plus fréquents

Affichez uniquement les 10 premiers éléments (ou n'importe quel nombre N) du vector trié.

for (size_t i = 0; i < 10 && i < entries.size(); ++i) {
    std::cout << entries[i].first << ": " << entries[i].second << "\n";
}

map ou unordered_map

Pour les gros fichiers, std::unordered_map est en moyenne plus rapide (recherche en O(1)), mais parcourt les éléments dans un ordre arbitraire. Utilisez std::map pour obtenir une sortie triée.

Mots vides

Filtrez les mots courts et fréquents comme « le », « et » et « de » à l'aide d'un ensemble de mots vides.

static const std::set<std::string> stop = {"the","and","of","to","a"};
if (stop.count(word)) continue;

Compter les lignes ou les caractères

Variantes du même modèle : comptez le nombre total de lignes avec std::getline et le nombre total de caractères avec std::ifstream et std::istreambuf_iterator.

Considérations de performance

Pour les fichiers très volumineux, utilisez unordered_map avec des clés string_view, projetez le fichier en mémoire avec mmap et évitez les allocations sur le tas pour chaque mot.

Vérification rapide

Quel conteneur parcourt automatiquement les éléments dans l'ordre alphabétique ?

Récapitulatif

Un compteur d'occurrences des mots réunit les flux, les chaînes de caractères, les conteneurs associatifs et les algorithmes. Choisissez map pour une sortie triée ou unordered_map pour la rapidité. Normalisez les mots, retirez la ponctuation et envisagez les mots vides pour obtenir des résultats plus propres.

Questions Fréquemment Posées

La leçon « Un compteur de fréquences des mots » est-elle gratuite ?

Oui — le texte complet de « Un compteur de fréquences des mots » 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 « Un compteur de fréquences des mots » ?

Compter les occurrences de chaque mot dans un fichier texte avec std::map 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 4 sur 4.

Combien de temps prend la leçon « Un compteur de fréquences des mots » ?

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. Construire une calculatrice CLI simple
  2. Lire et écrire des fichiers CSV
  3. Un jeu de devinettes numériques
  4. Un compteur de fréquences des mots
← Retour à C++ Academy