Re[2]: Контейнер распределённых указателей
От: Аноним  
Дата: 27.08.07 11:58
Оценка:
Здравствуйте, IROV.., Вы писали:

IRO>Здравствуйте, Аноним, Вы писали:


А>>Подскажите, пожалуйста, можно ли обойти ограничение std::auto_ptr<>, согласно которому его нельзя класть в контейнер?

А>>Мне нужно хранить в контейнере указатели, полученные с помощью new и не хотелось бы вручную вызывать delete.

IRO>

IRO>если гора не идет к Магомеду, тогда Магомед пойдет к горе


IRO>а что если не указатель модифицировать а контейнер?


IRO>например( пишу навскидку)


IRO>
IRO>template<class T>
IRO>class auto_ptr_vector
IRO>: public std::vector<T>
IRO>{
IRO>  auto_ptr_vector();
IRO>  ~auto_ptr_vector();
IRO>  {
IRO>    for each( T t in *this)
IRO>    {
IRO>      delete t;
IRO>    }
IRO>   }
IRO>};
IRO>


IRO>


IRO>З.Ы. кстати в бусте такое тоже есть, но раз такое с бустом то самому это написать не так уж и сложно


Если бы нужно было только на деструкторе делать delete, то можно было бы просто в конце использования контейнера вызвать for_each(). Но остаются ещё erase(), clear() и, наверное, ещё что-нибудь найдётся Ещё все ненаследуемые операторы и конструкторы перегружать нужно. У меня не бустовское терпение
Re[11]: Контейнер распределённых указателей
От: Sergey Россия  
Дата: 27.08.07 12:02
Оценка:
> S>Ну положим тормознутых мест в бусте хватает. Например, сериализация. Спирит тоже не особо блещет.
> Те из-за пары тормознутых либ нельзя использовать другие либы?

Да разве ж я говорил, что нельзя? Просто нужно понимать, что не все либы в бусте одинаково полезны. И некоторые надо с большой оглядкой юзать, а некоторые — не в полном объеме. Взять тот же read-write mutex из thread — который когда-то поломали (хотя не исключено, что он никогда правильно не работал), а только через пару лет выкинули (временно) из библиотеки.

> boost не смотря на заявления некоторых товарищей ни разу не монолит.

> И многими либами можно спокойно пользоваться не тоща за собой другие либы.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[12]: Контейнер распределённых указателей
От: WolfHound  
Дата: 27.08.07 13:00
Оценка:
Здравствуйте, Erop, Вы писали:

E>Ну пролема не в том, что boost монолтен, а в том, что нет удобной готовой инфраструктуры, для использования его "по частям"

Что не подключаешь то не используется.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Контейнер распределённых указателей
От: AstroMan  
Дата: 27.08.07 15:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Если бы нужно было только на деструкторе делать delete, то можно было бы просто в конце использования контейнера вызвать for_each(). Но остаются ещё erase(), clear() и, наверное, ещё что-нибудь найдётся Ещё все ненаследуемые операторы и конструкторы перегружать нужно. У меня не бустовское терпение


Основная проблема даже в том, что во многих местах. Тут надо учитывать откаты при исключениях в конструкторах и другие проблемы безопасности исключений. Поэтому shared_ptr в каком-либо виде предпочтительнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.