Maison  >  Article  >  développement back-end  >  Comment initialiser un std :: vector avec des éléments spécifiques sans boucles ?

Comment initialiser un std :: vector avec des éléments spécifiques sans boucles ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 03:08:02287parcourir

How to Initialize a std::vector with Specific Elements Without Loops?

Comment initialiser un std :: vector avec des éléments codés en dur comme un tableau

Initialiser un std :: vector avec une liste d'éléments codés en dur peut sembler compliqué par rapport à la simplicité d’initialisation d’un tableau. L'approche courante consiste à pousser de manière itérative des éléments sur le vecteur à l'aide de push_back(). Mais existe-t-il une solution plus élégante qui reflète la syntaxe concise de l'initialisation de tableau ?

La solution élégante de C 11

Si votre compilateur prend en charge C 11, la réponse est retentissante Oui. Vous pouvez directement initialiser un std::vector avec une liste d'éléments entourés de {}:

<code class="cpp">std::vector<int> v = {1, 2, 3, 4};</code>

Cette syntaxe imite l'initialisation d'un tableau et élimine le besoin de boucles ou de push_back().

Alternatives pour les compilateurs plus anciens

Pour les compilateurs qui ne prennent pas en charge C 11, il existe des méthodes alternatives :

Boost.Assign Library :

La bibliothèque Boost.Assign fournit un moyen pratique d'initialiser des vecteurs en utilisant la syntaxe suivante :

<code class="cpp">#include <boost/assign/list_of.hpp>
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);</code>

Surcharge d'opérateur :

Vous pouvez surcharger le = opérateur pour initialiser un vecteur :

<code class="cpp">#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
std::vector<int> v;
v += 1, 2, 3, 4;</code>

Notez que cette méthode entraîne une certaine surcharge de performances par rapport à l'initialisation directe, ce qui la rend moins adaptée au code critique en termes de performances.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn