Maison > développement back-end > C++ > Comment puis-je initialiser élégamment des vecteurs en C ?

Comment puis-je initialiser élégamment des vecteurs en C ?

Barbara Streisand
Libérer: 2024-12-21 11:33:14
original
177 Les gens l'ont consulté

How Can I Elegantly Initialize Vectors in C  ?

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

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

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

Utilisation de = notation:

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

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!

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