Je prévois d'implémenter une liste de choses en C++ où les éléments pourraient être supprimés dans le désordre. Je ne pense pas que j'aurai besoin d'un quelconque accès aléatoire (j'ai juste besoin de balayer la liste périodiquement), et l'ordre des éléments n'est pas important non plus. J'ai pensé à std::list<Thing*> with this->position = insert(lst.end(), thing)
devrait faire l'affaire. Je voudrais que la classe Chose se souvienne de la position de chaque instance afin que je puisse facilement faire plus tard lst.erase(this->position)
en temps constant.Quelle est la durée de vie et la validité des itérateurs C++?
Cependant, je suis encore un peu nouveau pour C + les conteneurs STL, et je ne sais pas s'il est sûr de garder itérateurs pour si longtemps. Surtout, étant donné qu'il y aura d'autres éléments supprimés avant et après la chose insérée avant qu'il ne soit parti.
Bonne réponse, il serait également utile de savoir quelles raisons pourraient provoquer un vecteur de réaffecter. (l'insertion d'un élément est la plus évidente, mais y en a-t-il d'autres?) – Malabarba
Toute modification du vecteur (insertion et suppression) est autorisée à réallouer et invalider les itérateurs; que l'on le fasse ou non est défini par l'implémentation. Il est donc préférable de supposer que modifier un vecteur invalide toujours tous les itérateurs existants. – Miral