Maison >développement back-end >C++ >Comment puis-je initialiser efficacement std::vectors en C ?

Comment puis-je initialiser efficacement std::vectors en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-20 00:13:13612parcourir

How Can I Efficiently Initialize std::vectors in C  ?

Initialiser std::vectors avec simplicité : une approche rapide

Dans le domaine de la programmation, il est souvent souhaitable d'initialiser des structures de données avec des valeurs. Le std::vector, un conteneur omniprésent en C, offre une solution élégante pour de tels scénarios.

La méthode traditionnelle

Comme mentionné dans la requête, une méthode traditionnelle L'initialisation d'un std::vector se fait via l'approche append-and-assign :

std::vector<int> ints;
ints.push_back(10);
ints.push_back(20);
ints.push_back(30);

Bien que fonctionnel, ce processus implique plusieurs étapes et peut devenir fastidieux pour des collections importantes.

Initialisation rapide avec C 11

C 11 a introduit une amélioration significative, simplifiant l'initialisation vectorielle grâce à l'initialisation entre accolades :

std::vector<int> v = {1, 2, 3, 4};

Cette syntaxe fournit un moyen intuitif et simple d'initialiser des vecteurs avec des éléments codés en dur, éliminant ainsi le besoin d'éléments explicites. ajout.

Options alternatives avec Boost

Dans le cas où votre compilateur ne prend pas en charge C 11, la bibliothèque Boost.Assign propose des méthodes alternatives :

Liste des constructeurs :

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

espace de noms std Extension :

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

Il convient de noter que ces options Boost peuvent entraîner une surcharge de performances en raison de la construction deque sous-jacente. Pour le code sensible aux performances, il serait conseillé d'utiliser l'approche traditionnelle 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!

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