Lorsque vous travaillez avec des restrictions de données, il peut être difficile d'intégrer des tableaux de style C avec du C moderne des constructions comme std :: vector. Cette question se penche sur l'affectation efficace d'un std::vector à l'aide d'un tableau de style C.
La classe Foo, telle que décrite dans la question, est confrontée au dilemme de recevoir des données sous forme de tableau de style C mais d'avoir besoin pour le stocker dans un std::vector. Des approches simples impliquant le redimensionnement et le bouclage ou l'utilisation de std::copy() sont viables, mais une optimisation plus poussée peut être souhaitable.
Le secret réside dans la reconnaissance de la puissance de la conversion pointeur vers itérateur. Considérez l'extrait suivant :
w_.assign(w, w + len);
Dans ce code, les pointeurs w et w len définissent respectivement le début et la fin du tableau de style C. Lorsqu'elle est transmise à la méthode assign(), cette plage est interprétée comme une plage d'itérateur, permettant à std::vector de s'initialiser efficacement à partir du tableau.
Cette méthode exploite le système de types sous-jacent de C pour convertir de manière transparente les pointeurs aux itérateurs, fournissant la solution la plus concise et la plus efficace pour attribuer un std::vector à partir d'un tableau de style C.
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!