Simplification de l'initialisation de vecteur : options de codage en dur élégantes
La création d'initialiseurs personnalisés pour les tableaux est une pratique standard et simple. Cependant, lorsqu’il s’agit de vecteurs, trouver un mécanisme similaire peut s’avérer un peu plus délicat. La question inhérente est de savoir s’il existe une méthode permettant d’initialiser les vecteurs aussi proprement que les tableaux. Explorons les solutions.
L'approche standard, comme vous l'avez mentionné, implique des opérations push_back :
std::vector<int> ints; ints.push_back(10); ints.push_back(20); ints.push_back(30);
Bien que cette méthode remplisse son objectif, elle ne correspond pas à l'élégance de l'initialisation d'un tableau.
Initialisation entre accolades de C 11
Avec C 11 et les compilateurs compatibles comme GCC 4.4, vous pouvez adopter l'initialisation entre accolades pour les vecteurs :
std::vector<int> v = {1, 2, 3, 4};
Cette syntaxe fournit une manière concise et explicite d'initialiser les vecteurs.
Boost. Attribuer une bibliothèque
Une autre alternative consiste à utiliser la bibliothèque Boost.Assign. Il propose diverses techniques d'initialisation de vecteur :
Utilisation de list_of:
#include <boost/assign/list_of.hpp> ... std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);
Utilisation de = notation:
#include <boost/assign/std/vector.hpp> using namespace boost::assign; ... std::vector<int> v; v += 1, 2, 3, 4;
Cependant, notez que Boost.Assign entraîne une certaine surcharge de performances en raison de ses mécanismes sous-jacents. Pour le code sensible aux performances, envisagez l'approche push_back.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!