Cómo Iterar a través de un vector en C++
-
Usar el bucle
for
para iterar sobre el vector - Usar el bucle basado en el rango para iterar sobre el vector
-
Use el algoritmo
std::for_each
para iterar sobre el vector
Este artículo presentará un par de métodos para iterar a través del vector C++ usando diferentes bucles. Nótese que el código de muestra utiliza la operación cout
para imprimir elementos durante la iteración para una mejor demostración.
Usar el bucle for
para iterar sobre el vector
El primer método es for
el bucle, que consiste en una declaración de tres partes separadas por comas. Empezamos definiendo e inicializando la variable i
a cero, lo cual se hace sólo una vez. La siguiente parte compara la i
variable con el número de elementos del vector
, que se obtiene con el método size()
. La última parte se ejecuta cada iteración como una parte de comparación, y se incrementa i
en uno.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"bit", "nibble", "byte", "char",
"int", "long", "long long", "float",
"double", "long double"};
for (size_t i = 0; i < str_vec.size(); ++i) {
cout << str_vec[i] << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
bit - nibble - byte - char - int - long - long long - float - double - long double -
Usar el bucle basado en el rango para iterar sobre el vector
for
el bucle puede llegar a ser bastante difícil de leer en algunos casos, y es por eso que hay una estructura alternativa llamada bucle basado en el rango. Esta versión es más adecuada para iterar estructuras de contenedores sobrecomplicados y proporciona características flexibles para acceder a los elementos. Véase el siguiente ejemplo de código:
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"bit", "nibble", "byte", "char",
"int", "long", "long long", "float",
"double", "long double"};
for (auto item : str_vec) {
cout << item << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
Use el algoritmo std::for_each
para iterar sobre el vector
Los algoritmos STL tienen amplias características listas para su uso, y uno de esos métodos es el de iteración, que toma como argumentos: el rango y la función a aplicar a los elementos del rango. El siguiente ejemplo demuestra cómo podemos declarar un objeto función con la expresión lambda
y luego aplicar esta custom_func
a los elementos vectoriales con una sola declaración.
#include <algorithm>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::vector;
int main() {
vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto custom_func = [](auto &i) { i *= i; };
for_each(int_vec.begin(), int_vec.end(), custom_func);
for (auto i : int_vec) cout << i << "; ";
cout << endl;
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook