Menu
Coddy logo textTech

Parcourir un Set

Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 39 sur 56.

Maintenant que vous pouvez ajouter, vérifier et supprimer des éléments d'un ensemble, apprenons comment parcourir tous les éléments d'un ensemble. La boucle for basée sur une plage (range-based for loop) constitue le moyen le plus simple de visiter chaque élément.

Voici comment parcourir un ensemble :

std::set<std::string> fruits = {"banana", "apple", "cherry"};

for (const std::string& fruit : fruits) {
    std::cout << fruit << std::endl;
}

La caractéristique la plus importante à retenir est que les ensembles (sets) maintiennent automatiquement un ordre trié. Lorsque vous parcourez l'ensemble fruits ci-dessus, le résultat sera "apple", "banana", "cherry" - et non l'ordre dans lequel vous les avez insérés. Ce tri automatique est l'un des principaux avantages de l'utilisation de std::set.

Cette itération triée rend les ensembles parfaits pour afficher des données par ordre alphabétique ou numérique sans avoir besoin de les trier manuellement. Que vous travailliez avec des nombres, des chaînes de caractères ou d'autres types comparables, l'ensemble les présentera toujours dans leur séquence de tri naturelle.

challenge icon

Défi

Facile

Créez un programme qui démontre la fonctionnalité de tri automatique de std::set en ajoutant des mots à un ensemble, puis en les parcourant pour les afficher par ordre alphabétique. Ce défi testera votre compréhension des boucles for basées sur une plage (range-based for loops) avec les ensembles et la manière dont les ensembles maintiennent un ordre trié.

Les entrées suivantes seront fournies :

  • Un entier n représentant le nombre de mots à ajouter à l'ensemble
  • Ensuite, n chaînes de caractères représentant les mots à insérer dans l'ensemble

Votre programme doit :

  1. Créer un std::set<std::string> vide
  2. Lire le nombre de mots à ajouter
  3. Utiliser une boucle pour lire chaque mot et l'insérer dans l'ensemble en utilisant la méthode .insert()
  4. Utiliser une boucle for basée sur une plage pour parcourir l'ensemble et afficher chaque mot
  5. Après avoir affiché tous les mots, afficher le nombre total de mots uniques dans l'ensemble

Utilisez le format de sortie exact suivant :

Pour chaque mot de l'ensemble (par ordre alphabétique) :

[word]

Résumé à la fin :

Total unique words: [count]

Utilisez une boucle for basée sur une plage avec la syntaxe for (const std::string& word : wordSet) pour parcourir tous les éléments de l'ensemble. L'ensemble présentera automatiquement les mots par ordre alphabétique, démontrant l'un des avantages clés de l'utilisation de std::set. N'oubliez pas que si des mots en double sont fournis en entrée, ils seront automatiquement ignorés par l'ensemble, de sorte que seuls les mots uniques seront affichés.

Aide-mémoire

Utilisez une boucle for basée sur une plage pour parcourir tous les éléments d'un ensemble (set) :

std::set<std::string> fruits = {"banana", "apple", "cherry"};

for (const std::string& fruit : fruits) {
    std::cout << fruit << std::endl;
}

Les ensembles (sets) maintiennent automatiquement un ordre trié lors de l'itération. Les éléments sont affichés dans leur séquence de tri naturelle (alphabétique pour les chaînes de caractères, numérique pour les nombres), et non dans l'ordre d'insertion.

Essayez vous-même

#include <iostream>
#include <set>
#include <string>
using namespace std;

int main() {
    // Lire le nombre de mots
    int n;
    cin >> n;
    
    // Créer un ensemble vide pour stocker les mots
    set<string> wordSet;
    
    // TODO : Écrivez votre code ici
    // Lire n mots et les insérer dans l'ensemble
    // Utiliser une boucle for basée sur une plage pour parcourir l'ensemble et afficher chaque mot
    // Afficher le nombre total de mots uniques
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux