Menu
Coddy logo textTech

Iterando sobre um Conjunto

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 39 de 56.

Agora que você já sabe como adicionar, verificar e remover elementos de um conjunto, vamos aprender a iterar por todos os elementos de um conjunto. O loop for baseado em intervalo (range-based for loop) oferece a maneira mais limpa de percorrer cada elemento.

Veja como iterar através de um set:

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

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

A característica mais importante a ser lembrada é que os sets mantêm automaticamente a ordem ordenada. Quando você itera pelo set fruits acima, a saída será "apple", "banana", "cherry" - não a ordem em que você os inseriu. Esta ordenação automática é uma das principais vantagens de usar std::set.

Essa iteração ordenada torna os sets perfeitos para exibir dados em ordem alfabética ou numérica sem a necessidade de ordenar manualmente. Quer você esteja trabalhando com números, strings ou outros tipos comparáveis, o set sempre os apresentará em sua sequência ordenada natural.

challenge icon

Desafio

Fácil

Crie um programa que demonstre o recurso de ordenação automática do std::set adicionando palavras a um conjunto e, em seguida, iterando por elas para exibi-las em ordem alfabética. Este desafio testará sua compreensão de loops for baseados em intervalo (range-based for loops) com conjuntos e como os conjuntos mantêm a ordem classificada.

As seguintes entradas serão fornecidas:

  • Um número inteiro n representando a quantidade de palavras a serem adicionadas ao conjunto
  • Em seguida, n strings representando as palavras a serem inseridas no conjunto

Seu programa deve:

  1. Criar um std::set<std::string> vazio
  2. Ler o número de palavras a serem adicionadas
  3. Usar um loop para ler cada palavra e inseri-la no conjunto usando o método .insert()
  4. Usar um loop for baseado em intervalo para iterar pelo conjunto e imprimir cada palavra
  5. Após imprimir todas as palavras, exibir a contagem total de palavras únicas no conjunto

Use o seguinte formato de saída exato:

Para cada palavra no conjunto (em ordem alfabética):

[word]

Resumo ao final:

Total unique words: [count]

Use um loop for baseado em intervalo com a sintaxe for (const std::string& word : wordSet) para iterar por todos os elementos no conjunto. O conjunto apresentará automaticamente as palavras em ordem alfabética, demonstrando uma das principais vantagens de usar std::set. Lembre-se de que, se palavras duplicadas forem fornecidas na entrada, elas serão automaticamente ignoradas pelo conjunto, portanto, apenas palavras únicas serão exibidas.

Experimente você mesmo

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

int main() {
    // Leia o número de palavras
    int n;
    cin >> n;
    
    // Crie um conjunto vazio para armazenar palavras
    set<string> wordSet;
    
    // TODO: Escreva seu código aqui
    // Leia n palavras e insira-as no conjunto
    // Use um loop for baseado em intervalo para iterar pelo conjunto e imprimir cada palavra
    // Imprima a contagem total de palavras únicas
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo