for (it = V.begin(); it != V.end(); it++)
if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue.
Y a-t-il une façon élégante, sans passer par un
autre vecteur temporaire, de supprimer tous
les éléments d'un conteneur vérifiant une
condition, avec un certain type d'itérateur,
ou en passant erase à un certain algorithme,
ou ...... ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
James Kanze
Etienne Rousee wrote:
Autre problème:
for (it = V.begin(); it != V.end(); it++) if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une façon élégante, sans passer par un autre vecteur temporaire, de supprimer tous les éléments d'un conteneur vérifiant une condition, avec un certain type d'itérateur, ou en passant erase à un certain algorithme, ou ...... ?
it = V.begin() ; while ( it != V.end() ) { if ( /* condition */ ) { it = v.erase( it ) ; } else { ++ it ; } }
Mais c'est vrai qu'avant la STL, j'avais toujours considéré ta boucle comme un minimum de fonctionnalité qu'il fallait supporter dans une implémentation professionnelle.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Etienne Rousee wrote:
Autre problème:
for (it = V.begin(); it != V.end(); it++)
if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une
façon élégante, sans passer par un autre vecteur temporaire,
de supprimer tous les éléments d'un conteneur vérifiant une
condition, avec un certain type d'itérateur, ou en passant
erase à un certain algorithme, ou ...... ?
it = V.begin() ;
while ( it != V.end() ) {
if ( /* condition */ ) {
it = v.erase( it ) ;
} else {
++ it ;
}
}
Mais c'est vrai qu'avant la STL, j'avais toujours considéré ta
boucle comme un minimum de fonctionnalité qu'il fallait
supporter dans une implémentation professionnelle.
--
James Kanze mailto: james.kanze@free.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
for (it = V.begin(); it != V.end(); it++) if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une façon élégante, sans passer par un autre vecteur temporaire, de supprimer tous les éléments d'un conteneur vérifiant une condition, avec un certain type d'itérateur, ou en passant erase à un certain algorithme, ou ...... ?
it = V.begin() ; while ( it != V.end() ) { if ( /* condition */ ) { it = v.erase( it ) ; } else { ++ it ; } }
Mais c'est vrai qu'avant la STL, j'avais toujours considéré ta boucle comme un minimum de fonctionnalité qu'il fallait supporter dans une implémentation professionnelle.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Etienne Rousee
"James Kanze" a écrit ...
Etienne Rousee wrote:
Autre problème:
for (it = V.begin(); it != V.end(); it++) if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une façon élégante, sans passer par un autre vecteur temporaire, de supprimer tous les éléments d'un conteneur vérifiant une condition, avec un certain type d'itérateur, ou en passant erase à un certain algorithme, ou ...... ?
Oui, mais ma condition est de la forme "it->toto == -1" et là, il n'y a plus l'itérateur.
Sinon :
it = V.begin() ; while ( it != V.end() ) { if ( /* condition */ ) { it = v.erase( it ) ; } else { ++ it ; } }
Merci, je vais essayer ça.
Mais c'est vrai qu'avant la STL, j'avais toujours considéré ta boucle comme un minimum de fonctionnalité qu'il fallait supporter dans une implémentation professionnelle.
Ben oui.
--
Etienne
"James Kanze" <kanze@none> a écrit ...
Etienne Rousee wrote:
Autre problème:
for (it = V.begin(); it != V.end(); it++)
if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une
façon élégante, sans passer par un autre vecteur temporaire,
de supprimer tous les éléments d'un conteneur vérifiant une
condition, avec un certain type d'itérateur, ou en passant
erase à un certain algorithme, ou ...... ?
Oui, mais ma condition est de la forme "it->toto == -1"
et là, il n'y a plus l'itérateur.
Sinon :
it = V.begin() ;
while ( it != V.end() ) {
if ( /* condition */ ) {
it = v.erase( it ) ;
} else {
++ it ;
}
}
Merci, je vais essayer ça.
Mais c'est vrai qu'avant la STL, j'avais toujours considéré ta
boucle comme un minimum de fonctionnalité qu'il fallait
supporter dans une implémentation professionnelle.
for (it = V.begin(); it != V.end(); it++) if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une façon élégante, sans passer par un autre vecteur temporaire, de supprimer tous les éléments d'un conteneur vérifiant une condition, avec un certain type d'itérateur, ou en passant erase à un certain algorithme, ou ...... ?
Oui, mais ma condition est de la forme "it->toto == -1" et là, il n'y a plus l'itérateur.
Sinon :
it = V.begin() ; while ( it != V.end() ) { if ( /* condition */ ) { it = v.erase( it ) ; } else { ++ it ; } }
Merci, je vais essayer ça.
Mais c'est vrai qu'avant la STL, j'avais toujours considéré ta boucle comme un minimum de fonctionnalité qu'il fallait supporter dans une implémentation professionnelle.
Ben oui.
--
Etienne
kanze
Etienne Rousee wrote:
"James Kanze" a écrit ...
Etienne Rousee wrote:
Autre problème:
for (it = V.begin(); it != V.end(); it++) if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une façon élégante, sans passer par un autre vecteur temporaire, de supprimer tous les éléments d'un conteneur vérifiant une condition, avec un certain type d'itérateur, ou en passant erase à un certain algorithme, ou ...... ?
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Etienne Rousee wrote:
"James Kanze" <kanze@none> a écrit ...
Etienne Rousee wrote:
Autre problème:
for (it = V.begin(); it != V.end(); it++)
if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une
façon élégante, sans passer par un autre vecteur
temporaire, de supprimer tous les éléments d'un conteneur
vérifiant une condition, avec un certain type
d'itérateur, ou en passant erase à un certain algorithme,
ou ...... ?
for (it = V.begin(); it != V.end(); it++) if ( /* condition */ ) V.erase(it);
En faisant celà, je me marche sur la queue. Y a-t-il une façon élégante, sans passer par un autre vecteur temporaire, de supprimer tous les éléments d'un conteneur vérifiant une condition, avec un certain type d'itérateur, ou en passant erase à un certain algorithme, ou ...... ?