Criar matriz de Estruturas em C++
- Usar a declaração de matriz de estilo C para criar um array de comprimento fixo de estruturas
-
Utilizar
std::vector
e construtor de lista de inicializadores para criar matriz de comprimento variável de Estruturas
Este artigo irá demonstrar múltiplos métodos de como criar um array de estruturas em C++.
Usar a declaração de matriz de estilo C para criar um array de comprimento fixo de estruturas
A matriz de comprimento fixo das estruturas pode ser declarada utilizando []
notação do array ao estilo C. Neste caso, definimos um struct
arbitrário chamado Company
com múltiplos membros de dados e inicializámos um array de 2 elementos. A única desvantagem deste método é que o array declarado é um objecto em bruto sem quaisquer funções incorporadas. No lado positivo, pode ser mais eficiente e mais rápido do que os recipientes da biblioteca C++.
#include <iostream>
#include <string>
#include <vector>
using std::cout; using std::endl;
using std::vector; using std::string;
struct Company{
string name;
string ceo;
float income;
int employess;
};
int main(){
Company comp_arr[2] = {{"Intel", "Bob Swan", 91213.11, 110823},
{"Apple", "Tim Cook", 131231.11, 137031}};
for (const auto &arr : comp_arr) {
cout << "Name: " << arr.name << endl
<< "CEO: " << arr.ceo << endl
<< "Income: " << arr.income << endl
<< "Employees: " << arr.employess << endl << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Name: Intel
CEO: Bob Swan
Income: 91213.1
Employees: 110823
Name: Apple
CEO: Tim Cook
Income: 131231
Employees: 137031
Utilizar std::vector
e construtor de lista de inicializadores para criar matriz de comprimento variável de Estruturas
Em alternativa, podemos utilizar um contentor std::vector
para declarar um array variável que fornece múltiplos métodos incorporados para manipulação de dados. O objecto std::vector
pode ser inicializado com a mesma notação que o exemplo anterior. Novos elementos podem ser anexados ao array utilizando o método tradicional push_back
, e o último elemento pode ser removido com pop_back
. Neste exemplo, os elementos são impressos na consola um a um.
Note-se que os membros da lista de inicializadores devem incluir braçadeiras exteriores encaracoladas para uma correcta atribuição e formatação.
#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
using std::string;
struct Company{
string name;
string ceo;
float income;
int employess;
};
int main(){
vector<Company> comp_arr = {{"Intel", "Bob Swan", 91213.11, 110823},
{"Apple", "Tim Cook", 131231.11, 137031}};
for (const auto &arr : comp_arr) {
cout << "Name: " << arr.name << endl
<< "CEO: " << arr.ceo << endl
<< "Income: " << arr.income << endl
<< "Employees: " << arr.employess << endl << endl;
}
return EXIT_SUCCESS;
}
Resultado:
Name: Intel
CEO: Bob Swan
Income: 91213.1
Employees: 110823
Name: Apple
CEO: Tim Cook
Income: 131231
Employees: 137031