Maison > développement back-end > C++ > Comment puis-je initialiser élégamment un std::vector avec des éléments codés en dur en C ?

Comment puis-je initialiser élégamment un std::vector avec des éléments codés en dur en C ?

Susan Sarandon
Libérer: 2024-12-22 20:29:59
original
155 Les gens l'ont consulté

How Can I Elegantly Initialize a std::vector with Hardcoded Elements in C  ?

Initialisation élégante de std::vector avec des éléments codés en dur

Bien qu'il soit simple d'initialiser un tableau en C, par exemple, int a[] = {10, 20, 30}, l'initialisation d'un std::vector de la même manière peut sembler encombrant. Voici deux façons élégantes d'obtenir le même résultat :

Liste d'initialisation C 11

Dans C 11 et versions ultérieures, vous pouvez utiliser des listes d'initialisation pour initialiser un std : vector directement :

std::vector<int> v = {1, 2, 3, 4};
Copier après la connexion

Cette syntaxe est supportée par GCC à partir de la version 4.4. Cependant, VC 2010 ne prend pas encore en charge cette fonctionnalité.

Bibliothèque Boost.Assign

Alternativement, la bibliothèque Boost.Assign fournit un moyen pratique d'initialiser un std :: vecteur :

#include <boost/assign/list_of.hpp>
...
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);
Copier après la connexion

Ou :

#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
...
std::vector<int> v;
v += 1, 2, 3, 4;
Copier après la connexion

Notez que cette dernière syntaxe implique une légère surcharge due à l'utilisation interne d'un std::deque. Par conséquent, pour le code critique en termes de performances, envisagez d'utiliser directement la liste d'initialisation std::vector, comme suggéré par Yacoby dans la question d'origine.

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.cn
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