Hoy vamos a ver cómo usar un vector de structs o un vector lleno de struct en C++.
Te enseñaré a declarar un vector de tipo struct, devolver uno de una función, agregarle contenido, recorrerlo y también recibirlo como parámetro.
Vector de tipo struct en C++
Comencemos declarando nuestra estructura en C++, para más tarde usarla en un vector de structs. En este caso usaré algo muy básico: un struct de persona con nombre
y edad
:
struct Persona
{
int edad;
string nombre;
};
Para declarar un vector de struct hacemos lo siguiente:
vector<Persona> personas;
En donde estamos indicando el tipo entre los signos de <
y >
.
Si queremos devolver un vector de struct en una función lo indicamos así:
vector<Persona> obtener_personas()
{
/**/
}
Por otro lado, para recibirlo como parámetro en una función se indica así:
void imprimir_personas(vector<Persona> personas)
{
/**/
}
Poniendo todo junto
Veamos las siguientes funciones que llenan un vector de tipo struct, lo recorren y ponen en práctica los ejemplos que vimos anteriormente, todo esto en lenguaje C++:
// https://parzibyte.me/blog
#include <iostream>
#include <vector>
using namespace std;
struct Persona
{
int edad;
string nombre;
};
vector<Persona> obtener_personas()
{
vector<Persona> personas;
personas.push_back(Persona{40, "Luis"});
personas.push_back(Persona{18, "Fer"});
return personas;
}
void imprimir_personas(vector<Persona> personas)
{
int i;
for (i = 0; i < personas.size(); i++)
{
Persona persona = personas.at(i);
cout << "Tenemos a la persona " << persona.nombre << " con edad " << persona.edad << "\n";
}
}
int main(int argc, char const *argv[])
{
imprimir_personas(obtener_personas());
return 0;
}
Declaramos el struct en la línea 7, luego una función que recibirá un vector de tipo struct en la línea 13, en esa misma función agregamos contenido al vector con push_back
, agregando un struct anónimo.
Luego en la línea 21 declaramos la función que recibe un vector de struct, lo recorremos en la línea 25 e imprimimos los datos en la línea 28.
Finalmente usamos ambas funciones en la línea 34, con el siguiente resultado:
Para terminar te dejo con más ejemplos de código C++ en mi blog.