Patrones de Uso Prácticos
Filtrado de Elementos
#include <iostream>
#include <vector>
int main() {
std::vector<int> números = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// Filtrar números pares
for (int num : números) {
if (num % 2 == 0) {
std::cout << num << " ";
}
}
return 0;
}
#include <iostream>
#include <vector>
int main() {
std::vector<int> números = {1, 2, 3, 4, 5};
// Elevar al cuadrado cada número
for (int& num : números) {
num = num * num;
}
// Imprimir los números transformados
for (int num : números) {
std::cout << num << " ";
}
return 0;
}
Trabajo con Estructuras de Datos Complejas
Iteración Anidada
#include <iostream>
#include <vector>
int main() {
std::vector<std::vector<int>> matriz = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Iterar a través del vector 2D
for (const auto& fila : matriz) {
for (int num : fila) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
Patrones de Iteración
graph TD
A[Patrones de Iteración] --> B[Iteración Lineal Simple]
A --> C[Iteración Anidada]
A --> D[Iteración Condicional]
A --> E[Transformación]
Técnicas de Iteración Avanzadas
Iterar con Índice
#include <iostream>
#include <vector>
int main() {
std::vector<std::string> frutas = {"manzana", "plátano", "cereza"};
// Iterar con índice
for (size_t i = 0; i < frutas.size(); ++i) {
std::cout << "Índice " << i << ": " << frutas[i] << std::endl;
}
return 0;
}
Casos de Uso Comunes
| Caso de Uso |
Descripción |
Ejemplo |
| Procesamiento de Datos |
Transformar o filtrar colecciones |
Elevar al cuadrado números |
| Configuración |
Iterar a través de ajustes |
Leer parámetros de configuración |
| Inicialización |
Poblar estructuras de datos |
Rellenar arrays o vectores |
Mejores Prácticas
- Usar referencias constantes para iteraciones de solo lectura.
- Evitar modificar el contenedor durante la iteración.
- Elegir el método de iteración más apropiado.
Consideraciones de Rendimiento
graph TD
A[Rendimiento] --> B[Por Valor]
A --> C[Por Referencia]
A --> D[Referencia Constante]
B --> E[Sobrecarga de Copias]
C --> F[Modificación Directa]
D --> G[Más Eficiente para Objetos Grandes]
Conclusión
Los bucles for basados en rango proporcionan mecanismos de iteración potentes y flexibles. LabEx recomienda dominar estos patrones para escribir código C++ más expresivo y eficiente.