Criar matriz de Estruturas em C++

Jinku Hu 12 outubro 2023
  1. Usar a declaração de array de estilo C para criar um array de comprimento fixo de estruturas
  2. Utilizar std::vector e construtor de lista de inicializadores para criar matriz de comprimento variável de Estruturas
Criar matriz de Estruturas em C++

Este artigo irá demonstrar múltiplos métodos de como criar um array de estruturas em C++.

Usar a declaração de array 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::string;
using std::vector;

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::string;
using std::vector;

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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artigo relacionado - C++ Array