C++ : suppression d'un objet dans un vector
Fermé
cssiste
Messages postés
1
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
19 juillet 2007
-
19 juil. 2007 à 13:12
mamiemando Messages postés 33623 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 11 avril 2025 - 19 juil. 2007 à 17:48
mamiemando Messages postés 33623 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 11 avril 2025 - 19 juil. 2007 à 17:48
1 réponse
mamiemando
Messages postés
33623
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
11 avril 2025
7 840
19 juil. 2007 à 17:48
19 juil. 2007 à 17:48
Je regarderai en détail ce que tu as fait plus tard mais d'ores et déjà faire des suppression dans un std::vector est d'un point de vue pas très efficace car il force à décaler (et recopier) toute la fin du vector. Il serait peut être plus logique d'utiliser un autre container. La question c'est
- est-ce que l'indexation dans ton vector as une importance
- avec quelle complexité (O(log(n)), O(log(n)) veux-tu pouvoir retrouver un élément
- est ce que tu peux avoir plusieurs structures identiques dans ton container
D'un point de vue STL quand tu fais un erase, les iterators que tu utilises pour parcourir ton container sont dès lors invalides (typiquement l'iterator obtenu par la méthode .end()). De plus tu ne peux pas ajouter un entier à un iterator, car un iterator n'est pas un pointeur, même si ça y ressemble.
Bonne chance
- est-ce que l'indexation dans ton vector as une importance
- avec quelle complexité (O(log(n)), O(log(n)) veux-tu pouvoir retrouver un élément
- est ce que tu peux avoir plusieurs structures identiques dans ton container
D'un point de vue STL quand tu fais un erase, les iterators que tu utilises pour parcourir ton container sont dès lors invalides (typiquement l'iterator obtenu par la méthode .end()). De plus tu ne peux pas ajouter un entier à un iterator, car un iterator n'est pas un pointeur, même si ça y ressemble.
Bonne chance