Iniciar Vector de Estructuras en C++
- Usar el Constructor de Listas de Inicialización para inicializar un Vector de Estructuras en C++
-
Use Range Constructor para inicializar un vector de
struct
en C++ - Usar el Constructor Personalizado para inicializar un Vector de Estructuras en C++
Este artículo demostrará múltiples métodos de cómo inicializar un vector de estructuras en C++.
Usar el Constructor de Listas de Inicialización para inicializar un Vector de Estructuras en C++
Una lista de inicialización es una forma común de inicializar los contenedores con valores constantes. Este método es más adecuado para las estructuras de datos que necesitan tener un estado inicial de algún tipo. En el siguiente ejemplo, dado que el vector
contiene estructuras Person
definidas, los elementos de la lista de inicialización deben agruparse dentro de corchetes y separarse con dos puntos. Observe que los elementos de de struct
se acceden usando la notación struct.element
y se envían a la consola.
#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::string;
using std::vector;
struct Person {
string name;
string surname;
int age;
};
int main() {
vector<Person> parr1 = {{"John", "Cooper", 32},
{"Theo", "Parrot", 23},
{"Aun", "Chao", 43},
{"Vivien", "Bardot", 67}};
for (const auto &arr : parr1) {
cout << "Name: " << arr.name << endl
<< "Surname: " << arr.surname << endl
<< "Age: " << arr.age << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Name: John
Surname: Cooper
Age: 32
Name: Theo
Surname: Parrot
Age: 23
Name: Aun
Surname: Chao
Age: 43
Name: Vivien
Surname: Bardot
Age: 67
Use Range Constructor para inicializar un vector de struct
en C++
Alternativamente, el constructor de rango puede ser utilizado para inicializar el vector
de las estructuras. Este método es útil cuando se necesita crear otra copia del objeto vector
existente. Como se muestra en el siguiente ejemplo de código, declaramos un vector parr3
de la estructura Person
e iniciamos con el contenido del vector parr1
del mismo tipo.
#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::string;
using std::vector;
struct Person {
string name;
string surname;
int age;
};
int main() {
vector<Person> parr1 = {
{"John", "Cooper", 32}, {"Theo", "Parrot", 23}, {"Kim", "Colbert", 53},
{"Aun", "Chao", 43},
vector<Person> parr3(parr1.begin(), parr1.end());
for (const auto &arr : parr3) {
cout << "Name: " << arr.name << endl
<< "Surname: " << arr.surname << endl
<< "Age: " << arr.age << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Name: John
Surname: Cooper
Age: 32
Name: Theo
Surname: Parrot
Age: 23
Name: Kim
Surname: Colbert
Age: 53
Name: Aun
Surname: Chao
Age: 43
Usar el Constructor Personalizado para inicializar un Vector de Estructuras en C++
Otra solución es un constructor específico de vector
, que proporciona una característica para inicializar un vector con un número dado de los mismos valores. En este caso, proporcionamos al constructor un único elemento de tipo estructura Person
y un número arbitrario 3
para inicializar el objeto.
#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::string;
using std::vector;
struct Person {
string name;
string surname;
int age;
};
constexpr int NUM = 3;
int main() {
vector<Person> parr4(NUM, {"John", "Cooper", 32});
for (const auto &arr : parr4) {
cout << "Name: " << arr.name << endl
<< "Surname: " << arr.surname << endl
<< "Age: " << arr.age << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Name: John
Surname: Cooper
Age: 32
Name: John
Surname: Cooper
Age: 32
Name: John
Surname: Cooper
Age: 32
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