Comment initialiser un vecteur en C++

Jinku Hu 12 octobre 2023
Comment initialiser un vecteur en C++

Cet article explique comment initialiser un vecteur avec des valeurs constantes en C++.

Utiliser la notation de la liste d’initialisation pour attribuer des valeurs constantes aux éléments du vecteur en C++

Cette méthode est supportée depuis le style C++11, et c’est relativement la façon la plus lisible d’initialiser de façon constante la variable vector. Les valeurs sont spécifiées sous la forme d’une liste entrelacée précédée de l’opérateur d’affectation. Cette notation est souvent appelée copy-list-initialization.

#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;
}

Production:

one; two; three; four;

La version alternative est d’utiliser l’appel du constructeur d’initialisation-liste lors de la déclaration de la variable vectorielle comme indiqué dans le bloc de code suivant:

#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;
}

Une macro de préprocesseur est une autre façon d’implémenter la notation de la liste d’initialisation. Dans cet exemple, nous définissons les valeurs d’éléments constants comme une macro de type objet INIT et nous l’assignons ensuite à la variable vector comme suit:

#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 syntaxe de la liste d’initialisation du C++11 est un outil assez puissant et peut être utilisée pour instancier le vector de structures complexes comme le montre l’exemple de code suivant:

#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;
}

Production:

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

Article connexe - C++ Vector