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.
Desafio
FácilCrie 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
nrepresentando a quantidade de palavras a serem adicionadas ao conjunto - Em seguida,
nstrings representando as palavras a serem inseridas no conjunto
Seu programa deve:
- Criar um
std::set<std::string>vazio - Ler o número de palavras a serem adicionadas
- Usar um loop para ler cada palavra e inseri-la no conjunto usando o método
.insert() - Usar um loop for baseado em intervalo para iterar pelo conjunto e imprimir cada palavra
- 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;
}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
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma Tarefa6Conjuntos (Elementos Únicos)
Apresentando o std::setCriar Conjunto e Adicionar ElementosVerificando ElementosRemovendo ElementosIterando sobre um ConjuntoRecapitulação - Números Únicos