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 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 19 juil. 2007 à 17:48
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 19 juil. 2007 à 17:48
A voir également:
- C++ : suppression d'un objet dans un vector
- Forcer la suppression d'un fichier - Guide
- Vente objet occasion entre particulier - Guide
- Suppression compte instagram - Guide
- Ouvrez ce fichier avec un éditeur de texte simple (bloc-notes, textedit, gedit, …) pour y découvrir le nom d'un objet. ✓ - Forum Études / Formation High-Tech
- Suppression page word - Guide
1 réponse
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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