En C++98, la manera común de iterar sobre un vector es utilizando un bucle for
con iteradores.
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << ' ';
}
return 0;
}
Con la introducción de C++11, se puede usar el bucle for
basado en rangos para iterar de manera más concisa.
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (int n : vec) {
std::cout << n << ' ';
}
return 0;
}
C++17 introduce las funciones std::for_each
y std::begin/std::end
para hacer las iteraciones más flexibles.
#include <vector>
#include <iostream>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::for_each(std::begin(vec), std::end(vec), [](int n) {
std::cout << n << ' ';
});
return 0;
}
C++20 añade ranges para iterar sobre colecciones de manera aún más simplificada y expresiva.
#include <vector>
#include <iostream>
#include <ranges>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (int n : vec | std::views::all) {
std::cout << n << ' ';
}
return 0;
}
Jorge García
Fullstack developer