Comment dupliquer et ajouter efficacement un vecteur à lui-même ?
Dec 07, 2024 am 01:53 AMAuto-ajout efficace de vecteurs
Avez-vous rencontré le besoin de dupliquer et d'ajouter le contenu d'un vecteur à lui-même ? Si tel est le cas, vous recherchez peut-être une solution élégante sans recourir à des boucles explicites.
Bien que std::vector::insert puisse sembler être un candidat approprié, la version itérative présente un comportement non défini si elle est utilisée avec *this comme itérateur. De plus, std::copy seul peut entraîner des erreurs de segmentation.
N'ayez crainte ! Il existe une approche simple et efficace qui comporte deux étapes :
- Redimensionner : Étendre la capacité du vecteur pour accueillir les éléments dupliqués. Vous pouvez utiliser redimensionner ou réserver à cet effet.
- Copier : Utilisez std::copy_n pour transférer les éléments d'origine vers la partie nouvellement allouée du vecteur.
Voici un exemple d'utilisation du redimensionnement :
1 2 3 |
|
Vous pouvez également utiliser la réserve avec std::back_inserter:
1 2 3 |
|
Notez que lors de l'utilisation de la réserve, std::copy_n est essentiel puisque end() pointe vers la fin du vecteur, ce qui le rend invalide en tant que point d'insertion.
Les solutions ci-dessus garantissent que le vecteur résultant contient les éléments d'origine dupliqués et ajoutés à eux-mêmes, préservant l'intégrité des éléments existants et minimisant les opérations de réallocation.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Gulc: Cibliothèque C construite à partir de zéro

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Utilisation distincte et partage de phrases

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?
