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? }
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);
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!