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ê pode 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 oferece a maneira mais clara de visitar 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;
}O recurso mais importante a lembrar é que os conjuntos mantêm automaticamente a ordem classificada. Quando você percorre o conjunto de frutas acima, a saída será "apple", "banana", "cherry" — não a ordem em que você os inseriu. Essa 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 de 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 dos loops for baseados em intervalo com conjuntos e de como os conjuntos mantêm a ordem classificada.
As seguintes entradas serão fornecidas:
- Um número inteiro
nrepresentando o número 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 quantidade total de palavras únicas no conjunto
Use o seguinte formato exato de saída:
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 do 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, somente 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 ÚnicosPratique por conta própria: Compilador de C++ online