Un vector en C++ es como un arreglo mejorado, es algo así como una lista o arraylist de Java.
Los vectores tienen muchos métodos que hacen que sean dinámicos, y no estáticos como los arreglos.
Hoy vamos a ver algunas maneras de recorrer o iterar vectores en C++.
Voy a mostrar algunas maneras de iterar un vector en C++, pero antes daré una introducción.
Primero hay que incluir el encabezado de:
include <vector>
Después, declarar un vector:
std::vector<tipo> nombre;
Para declarar uno de enteros sería así:
std::vector<int> numeros;
Y puede declararse un vector de cualquier tipo.
Cada vector tiene muchos métodos, entre los que destacan:
size() - 1
Para iterar un vector con números hacemos un ciclo for con una variable de tipo size_t
que va desde 0 hasta vector.size()
:
for (std::size_t i = 0; i < edades.size(); i++) {/*código*/}
En cada iteración tenemos acceso al elemento actual con:
int edad = edades[i];
Si queremos iterarlo con un cursor debemos usar auto. Así:
for (auto edad = edades.begin(); edad != edades.end(); edad++) {/*código*/}
Como estamos trabajando con punteros, debemos aumentar al mismo, no se debería decrementar. En el caso necesario de iterarlo al revés, simplemente se usa rbegin
y rend
.
Una vez explicado todo esto, veamos el código:
#include <iostream>
#include <vector>
int main() {
std::vector<int> edades;
// Agregar elementos
edades.push_back(21);
edades.push_back(50);
edades.push_back(23);
edades.push_back(44);
std::cout << "--->Iterando edades\n";
std::cout << "Con indice usando size_t\n";
// Iterar con índice
for (std::size_t i = 0; i < edades.size(); i++) {
int edad = edades[i];
std::cout << edad << "\n";
}
// Iterar con índice auto
// https://parzibyte.me/blog/2019/06/19/modificador-auto-cpp/
std::cout << "Con indice usando auto\n";
for (auto i = 0; i < edades.size(); i++) {
int edad = edades[i];
std::cout << edad << "\n";
}
// Iterar con punteros
std::cout << "Con punteros\n";
for (auto edad = edades.begin(); edad != edades.end(); edad++) {
std::cout << *edad << "\n";
}
// Otro vector, de cadenas
std::vector<std::string> nombres;
nombres.push_back("Luis");
nombres.push_back("John Galt");
nombres.push_back("Hank Rearden");
// Iterar al revés con punteros
std::cout << "--->Iterando nombres\n";
std::cout << "Con punteros de fin a inicio\n";
for (auto nombre = nombres.rbegin(); nombre != nombres.rend(); nombre++) {
std::cout << *nombre << "\n";
}
// Iterar al revés con índice
std::cout << "Con indice de fin a inicio\n";
for (std::size_t i = nombres.size() - 1; i >= 0; i--) {
std::string nombre = nombres[i];
std::cout << nombre << "\n";
}
}
En el ejemplo iteramos con punteros y con un índice numérico. También recorremos dos vectores, uno de tipo int y otro de tipo string.
De la misma forma, los vectores se recorren al revés, y todos esos métodos se pueden combinar o intercambiar de acuerdo a tus necesidades.
Si te preguntas por qué uso std::string, mira este post.
Por cierto, para llenar el vector con algunos datos se usa la función push_back
.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.
Ver comentarios
El método "at" también es genial si se trabaja con punteros
http://www.cplusplus.com/reference/vector/vector/at/
Gracias por compartir su conocimiento
Saludos :)