Maison > développement back-end > C++ > Comment initialiser efficacement un « std :: vector » à partir d'un tableau de style C ?

Comment initialiser efficacement un « std :: vector » à partir d'un tableau de style C ?

Patricia Arquette
Libérer: 2024-11-09 14:22:02
original
463 Les gens l'ont consulté

How to Efficiently Initialize a `std::vector` from a C-style Array?

Attribution efficace d'un std :: vecteur à partir d'un tableau de style C

Lorsque vous rencontrez la tâche d'initialiser un std :: vecteur à partir d'un Baie de style C, il est crucial de prendre en compte à la fois l’efficacité et la commodité. Cette situation se produit lorsque des contraintes externes imposent que les données soient fournies dans un format de tableau de style C, comme illustré dans l'exemple de classe suivant :

class Foo {
  std::vector<double> w_;
public:
  void set_data(double* w, int len){
   // how to cheaply initialize the std::vector?
}
Copier après la connexion

Pour initialiser efficacement le std::vector, nous pouvons tirer parti du fait que les pointeurs de tableau de style C peuvent également être traités comme des itérateurs. Cela nous permet d'éviter de créer un conteneur intermédiaire ou de faire une boucle sur des éléments individuels :

Solution élégante et efficace :

w_.assign(w, w + len);
Copier après la connexion

Ici, w est le pointeur vers le premier élément dans le tableau de style C, et w len pointe vers la fin du tableau. L'utilisation de la fonction assign avec des itérateurs construit automatiquement les éléments vectoriels à partir des éléments du tableau. Cette méthode est non seulement efficace mais aussi concise et élégante.

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