В частности, у меня есть класс, который в настоящее время использует вектор и push_back. Внутри вектора, который я хочу отслеживать, есть элемент. Повторение вектора может привести к аннулированию итератора, поэтому я сохраняю его индекс. Это дешево, чтобы снова найти итератор, используя индекс. Я не могу зарезервировать вектор, так как не знаю, сколько элементов будет вставлено.
Я рассмотрел возможность создания структуры данных в качестве параметра шаблона, и, возможно, вместо этого можно использовать список. В этом случае поиск итератора из индекса не является тривиальной операцией. Поскольку откат назад в списке не приводит к недействительности итераторов к существующим элементам, я мог бы просто сохранить этот итератор.
Но как я могу закодировать общий класс, который легко справляется с обоими случаями?
Если я могу узнать, приведет ли push_back к недействительности итератора, я могу сохранить итератор и обновить его после каждого push_back, сохранив расстояние от начала до операции.