Вы не можете хранить auto_ptr
в std::vector
, но хранение простого указателя хорошо, даже если то, на что он указывает на , является auto_ptr
.
Я не понимаю, почему вы хотите это сделать, хотя.Весь смысл auto_ptr
состоит в том, чтобы гарантировать, что объекты, выделенные в куче, удаляются автоматически, когда они выходят из области видимости.Вы потеряете это преимущество, если сам auto_ptr
придется удалить вручную.
Если вы хотите безопасно хранить объекты, выделенные в куче, в векторе, вы можете использовать std::tr1::shared_ptr
вместо auto_ptr
или использоватьКонтейнеры указателей Boost.Или, если вы используете C ++ 11, std::unique_ptr
похож на std::auto_ptr
, за исключением того, что его безопасно использовать в контейнерах.