Maison > développement back-end > C++ > 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
Libérer: 2024-10-24 03:08:02
original
383 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal