Maison > développement back-end > C++ > Pouvez-vous supprimer des éléments d'un vecteur C tout en utilisant une boucle For basée sur une plage ?

Pouvez-vous supprimer des éléments d'un vecteur C tout en utilisant une boucle For basée sur une plage ?

Linda Hamilton
Libérer: 2024-11-28 17:41:14
original
940 Les gens l'ont consulté

Can You Remove Elements from a C   Vector While Using a Range-Based For Loop?

Itération et modification de vecteurs avec une boucle de plage C 11

Lors d'une boucle sur un vecteur à l'aide du for basé sur la plage de C 11, une question courante se pose : pouvez-vous supprimer un élément dans la boucle ?

Limitations du For basé sur la plage Boucles

La réponse est non, car les boucles for basées sur une plage sont conçues pour accéder à chaque élément d'un conteneur une seule fois. Si vous devez modifier le conteneur, supprimer des éléments ou effectuer des itérations non linéaires, vous devez plutôt utiliser une boucle for traditionnelle.

Modification de vecteurs avec des boucles traditionnelles

Pour supprimer un élément d'un vecteur lors d'une itération, vous pouvez utiliser une boucle for traditionnelle :

for (auto it = inv.begin(); it != inv.end(); ++it) {
    // Do some stuff
    if (blah) {
        it = inv.erase(it);
        --it;  // Decrement iterator to avoid skipping an element
    }
}
Copier après la connexion

Avantages de la boucle traditionnelle Boucles

Les boucles traditionnelles offrent plus de flexibilité que les boucles for basées sur une plage :

  • Vous pouvez accéder aux éléments plusieurs fois.
  • Vous pouvez modifier le conteneur en ajouter ou supprimer des éléments.
  • Vous pouvez parcourir le conteneur de manière non linéaire, par exemple en sautant ou en revisitant éléments.

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