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
Linda Hamiltonoriginal
2024-11-28 17:41:14937parcourir

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
    }
}

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!

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