Iterar sobre un conjunto
Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 39 de 56.
Ahora que puedes añadir, comprobar y eliminar elementos de un conjunto, aprendamos a iterar a través de todos los elementos de un conjunto. El bucle for basado en rangos proporciona la forma más limpia de visitar cada elemento.
Aquí tienes cómo iterar a través de un conjunto:
std::set<std::string> fruits = {"banana", "apple", "cherry"};
for (const std::string& fruit : fruits) {
std::cout << fruit << std::endl;
}La característica más importante a recordar es que los conjuntos mantienen automáticamente el orden. Cuando iteres a través del conjunto fruits anterior, el resultado será "apple", "banana", "cherry", no el orden en que los insertaste. Esta ordenación automática es una de las ventajas clave de usar std::set.
Esta iteración ordenada hace que los conjuntos sean perfectos para mostrar datos en orden alfabético o numérico sin necesidad de ordenar manualmente. Ya sea que estés trabajando con números, cadenas u otros tipos comparables, el conjunto siempre los presentará en su secuencia ordenada natural.
Desafío
FácilCrea un programa que demuestre la función de ordenación automática de std::set agregando palabras a un conjunto y luego iterando a través de ellas para mostrarlas en orden alfabético. Este desafío pondrá a prueba tu comprensión de los bucles for basados en rangos con conjuntos y cómo los conjuntos mantienen el orden clasificado.
Se proporcionarán las siguientes entradas:
- Un entero
nque representa el número de palabras a agregar al conjunto - Luego
ncadenas que representan las palabras que se insertarán en el conjunto
Tu programa debe:
- Crear un
std::set<std::string>vacío - Leer el número de palabras a agregar
- Usar un bucle para leer cada palabra e insertarla en el conjunto usando el método
.insert() - Usar un bucle for basado en rangos para iterar a través del conjunto e imprimir cada palabra
- Después de imprimir todas las palabras, mostrar el recuento total de palabras únicas en el conjunto
Utiliza exactamente el siguiente formato de salida:
Para cada palabra en el conjunto (en orden alfabético):
[word]Resumen al final:
Total unique words: [count]Usa un bucle for basado en rangos con la sintaxis for (const std::string& word : wordSet) para iterar a través de todos los elementos del conjunto. El conjunto presentará automáticamente las palabras en orden alfabético, demostrando una de las ventajas clave de usar std::set. Recuerda que si se proporcionan palabras duplicadas en la entrada, el conjunto las ignorará automáticamente, por lo que solo se mostrarán palabras únicas.
Hoja de referencia
Usa un bucle for basado en rangos para iterar a través de todos los elementos de un conjunto (set):
std::set<std::string> fruits = {"banana", "apple", "cherry"};
for (const std::string& fruit : fruits) {
std::cout << fruit << std::endl;
}Los conjuntos (sets) mantienen automáticamente un orden clasificado durante la iteración. Los elementos se muestran en su secuencia ordenada natural (alfabética para cadenas, numérica para números), no en el orden de inserción.
Pruébalo tú mismo
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
// Leer el número de palabras
int n;
cin >> n;
// Crear un conjunto vacío para almacenar palabras
set<string> wordSet;
// TODO: Escribe tu código aquí
// Leer n palabras e insertarlas en el conjunto
// Usar un bucle for basado en rangos para iterar a través del conjunto e imprimir cada palabra
// Imprimir el recuento total de palabras únicas
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea6Conjuntos (Elementos únicos)
Introducción a std::setCrear conjunto y añadir elementosComprobar elementosEliminar elementosIterar sobre un conjuntoResumen - Números únicos