Maison > développement back-end > C++ > Comment supprimer en toute sécurité une série d'éléments d'une carte en fonction d'une condition ?

Comment supprimer en toute sécurité une série d'éléments d'une carte en fonction d'une condition ?

Patricia Arquette
Libérer: 2024-11-27 20:48:11
original
503 Les gens l'ont consulté

How to Safely Remove a Range of Elements from a Map Based on a Condition?

Effacer une plage d'éléments d'une carte avec une condition spécifique

Dans les situations où il est nécessaire de supprimer une plage spécifique d'éléments d'une carte en fonction d'une condition particulière , un algorithme équivalent "remove_if" est recherché. Cependant, Remove_if de STL ne peut pas être appliqué directement aux conteneurs associatifs tels que les cartes.

Pour obtenir cette fonctionnalité, une approche alternative consiste à parcourir la carte tout en appliquant la condition. Si la condition est remplie, l'élément correspondant est effacé. Cependant, l'effacement d'éléments à l'intérieur d'une boucle peut invalider les itérateurs.

La boucle modifiée suivante résout ce problème :

for(; iter != endIter; ) {
  if (predicate(*iter)) {
    iter = aMap.erase(iter);
  } else {
    ++iter;
  }
}
Copier après la connexion

En incrémentant l'itérateur uniquement lorsque l'élément n'est pas effacé, la boucle correctement gère l'invalidation des itérateurs. Cette approche garantit que la plage d'éléments souhaitée est supprimée et peut être utilisée en toute sécurité lors d'une itération sur une carte.

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