Если я удаляю векторные элементы с помощью функции erase () в c ++, будет ли также сдвигаться адрес конечного элемента, поскольку память в векторе выделяется последовательно?
Да, вы правы.
Более формально, все итераторы и ссылки в или после первой точки стирания, включая итератор end(), аннулированы.
end()
Другими словами, адреса элементов до точки стирания остаются прежними, но не те, что после.