Maison >développement back-end >C++ >Comment puis-je ajouter efficacement un vecteur à un autre en C ?

Comment puis-je ajouter efficacement un vecteur à un autre en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-20 20:13:16400parcourir

How Can I Efficiently Append One Vector to Another in C  ?

Ajout de vecteurs sans effort

Dans le monde de la manipulation de vecteurs, il est souvent nécessaire d'ajouter un vecteur à la fin d'un autre. Même si parcourir les éléments et effectuer des insertions individuelles peut sembler une approche évidente, nous sommes là pour proposer une solution plus efficace et plus élégante.

Considérez l'extrait de code suivant :

vector<int> a;
vector<int> b;

En supposant que les deux vecteurs comportent environ 30 éléments, comment pouvons-nous ajouter le contenu du vecteur b à la fin du vecteur a ?

La méthode de la force brute implique d'utiliser vector::push_back() pour ajouter chaque élément de b à a. Cependant, cette approche peut être fastidieuse et inefficace en termes de calcul.

Au lieu de cela, nous introduisons la méthode la plus efficace :

a.insert(a.end(), b.begin(), b.end());

Alternativement, pour C 11 et supérieur, considérez cette variante :

a.insert(std::end(a), std::begin(b), std::end(b));

Ces méthodes exploitent la fonction std::insert(), qui prend trois arguments : un itérateur jusqu'au point d'insertion, un itérateur au début de la plage source et un itérateur à la fin de la plage source. En fournissant les itérateurs appropriés, nous pouvons ajouter de manière transparente le contenu du vecteur b au vecteur a.

La deuxième variante de l'extrait de code utilise des itérateurs génériques, ce qui la rend également applicable à un tableau b. Cependant, cette approche nécessite C 11 ou une version ultérieure.

Pour les types définis par l'utilisateur, nous pouvons utiliser la recherche dépendante des arguments (ADL) pour simplifier davantage le code :

using std::begin, std::end;
a.insert(end(a), begin(b), end(b));

Avec ces élégants solutions, l'ajout de vecteurs devient une tâche sans effort, améliorant considérablement l'efficacité et la maintenabilité de votre code.

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