Cómo inicializar un vector en C++

Jinku Hu 12 octubre 2023
Cómo inicializar un vector en C++

Este artículo explicará cómo inicializar un vector con valores constantes en C++.

Usar la notación de lista de inicialización para asignar valores constantes a elementos vectoriales en C++

Este método ha sido soportado desde el estilo C++11, y es relativamente la forma más legible de inicializar constantemente la variable vector. Los valores se especifican como una lista de inicio entre corchetes que se precede con el operador de asignación. Esta notación a menudo se llama inicialización de lista de copias.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<string> arr = {"one", "two", "three", "four"};
  for (const auto &item : arr) {
    cout << item << "; ";
  }
  return EXIT_SUCCESS;
}

Resultado:

one; two; three; four;

La versión alternativa es usar la llamada al constructor de la lista de inicialización cuando se declara la variable vector como se muestra en el siguiente bloque de código:

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<string> arr{"one", "two", "three", "four"};
  for (const auto &item : arr) {
    cout << item << "; ";
  }
  return EXIT_SUCCESS;
}

Una macro del preprocesador es otra forma de implementar la notación de lista de inicialización. En este ejemplo, definimos los valores de los elementos constantes como macro de tipo objeto INIT y luego los asignamos a la variable vector de la siguiente manera:

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

#define INIT \
  { "one", "two", "three", "four" }

int main() {
  vector<string> arr = INIT;
  for (const auto &item : arr) {
    cout << item << "; ";
  }
  return EXIT_SUCCESS;
}

La sintaxis de la lista de inicialización de C++11 es una herramienta bastante poderosa y puede ser utilizada para instanciar vector de estructuras complejas como se demuestra en el siguiente ejemplo de código:

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

struct cpu {
  string company;
  string uarch;
  int year;
} typedef cpu;

int main() {
  vector<cpu> arr = {{"Intel", "Willow Cove", 2020},
                     {"Arm", "Poseidon", 2021},
                     {"Apple", "Vortex", 2018},
                     {"Marvell", "Triton", 2020}};

  for (const auto &item : arr) {
    cout << item.company << " - " << item.uarch << " - " << item.year << endl;
  }

  return EXIT_SUCCESS;
}

Resultado:

Intel - Willow Cove - 2020
Arm - Poseidon - 2021
Apple - Vortex - 2018
Marvell - Triton - 2020
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

Artículo relacionado - C++ Vector