Это , а не вопрос о помещении std :: auto_ptr в std :: vector.
Есть ли какой-нибудь векторный эквивалент std::auto_ptr
в std::
, std::tr1::
или boost::
? Я использую std::auto_ptr
в параметрах функций и возвращаемых значениях для определения семантики владения этими функциями. Но так я могу пропустить только отдельные объекты. В качестве временного решения для векторов у меня есть это:
std::auto_ptr<std::vector<std::tr1::shared_ptr<ClassExample> > > fx(....);
который, я полагаю, введя надстройку, я смогу изменить на это:
std::auto_ptr<std::vectro<boost::unique_ptr<ClassExample> > >f(...);
для определения строгой передачи права собственности, но это кажется довольно сложным. Чтобы упростить это, я могу использовать
std::vector<boost::unique_ptr<ClassExample> > f(...);
поскольку цена за глубокое копирование вектора невысока, но мне все еще любопытно, есть ли что-то, что я могу использовать так:
auto_vector<ClassExample> f(...);
означает, что функция освобождает владельцев всех объектов, а векторный массив внутренних данных не копируется глубоко.