A Vector<int>
(по крайней мере, если std::vector
) сохраняет элементы по значению, поэтому при вызове add()
создается копия объекта параметра и сохраняется эта копия в массиве. Следовательно, не имеет значения, что происходит с исходным объектом, копия в векторе жива, пока сам вектор (конечно, если явно не удален или перезаписан).
A Vector<X*>
может быть более подходящим, если вы
- хочу работать с полиморфными
X
объектами,
- не хочет копировать объекты
X
, например. потому что это дорого или запрещено,
- хочет поделиться одними и теми же объектами между разными сторонами.
Конечно, ничего из этого не относится к int
, только к реальным объектам. Тем не менее, лучше хранить умные указатели в векторе, а не в необработанных указателях, например vector<auto_ptr<X> >
или vector<shared_ptr<X> >
. Они автоматически управляют удалением объектов для вас.