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.
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.
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;
}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