Я планирую реализовать список вещей в C ++, где элементы могут быть удалены не по порядку. Я не ожидаю, что мне понадобится какой-либо произвольный доступ (мне просто нужно периодически сканировать список), и порядок элементов тоже не важен.
Так что я подумал, что std::list<Thing*> with this->position = insert(lst.end(), thing)
должно сработать. Я бы хотел, чтобы класс Thing запомнил положение каждого экземпляра, чтобы впоследствии я мог легко сделать lst.erase(this->position)
в постоянном времени.
Тем не менее, я все еще немного новичок в C ++ STL-контейнерах, и я не знаю, безопасно ли хранить итераторы в течение столь длительного времени. Особенно, если учесть, что другие элементы будут удалены впереди и после вставленной вещи, прежде чем она исчезнет.