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 fornece 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.

Esta iteração ordenada torna os conjuntos 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 conjunto 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.

Folha de consulta

Use um loop for baseado em intervalo para iterar por todos os elementos em um conjunto (set):

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

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

Sets mantêm automaticamente a ordem de classificação durante a iteração. Os elementos são exibidos em sua sequência natural de ordenação (alfabética para strings, numérica para números), não na ordem de inserção.

Experimente você mesmo

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

int main() {
    // Lê o número de palavras
    int n;
    cin >> n;
    
    // Cria um conjunto vazio para armazenar as palavras
    set<string> wordSet;
    
    // TODO: Escreva seu código aqui
    // Lê n palavras e as insere no conjunto
    // Use um loop for baseado em intervalo para iterar pelo conjunto e imprimir cada palavra
    // Imprime 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