Разбираем, почему при модификациях
std::vector «ломаются» привязки к элементам (итераторы, ссылки и указатели), чем опасны операции
erase и
push_back, как отличать настоящую инвалидацию от «уже не того элемента», и какие безопасные идиомы использовать (опора на возвращаемое значение
erase, хранение
id вместо
T
*/
T
&, повторный поиск через
find_if).