erase_ptr_container Что вы думаете?
От: IROV..  
Дата: 30.07.05 12:27
Оценка:
делаю такой алгорит..

    class delete_ptr
    {
    public:
        template<class T>
        void operator()( T *Object)const
        {
            delete Object;
        }

        template<class T1, class T2>
            void operator()(const std::pair<const T1,T2> &Pair)const
        {
            delete Pair.second;
        }
    };

    template<typename T_Contanier>
    void erase_ptr_container( T_Contanier & Container)
    {
        std::for_each(
            Container.begin(),
            Container.end(),
            delete_ptr());

        Container.clear();
    }


Но кажеться мне.. что можно было зделать покрасивше..

Неподскажите?
я не волшебник, я только учусь!
Re: erase_ptr_container Что вы думаете?
От: _nn_ www.nemerleweb.com
Дата: 30.07.05 12:53
Оценка:
Здравствуйте, IROV.., Вы писали:

IRO>Но кажеться мне.. что можно было зделать покрасивше..


IRO>Неподскажите?


Может просто воспользоваться умными указателями и тогда вопрос отпадет сам собой ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: erase_ptr_container Что вы думаете?
От: IROV..  
Дата: 30.07.05 12:55
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, IROV.., Вы писали:


IRO>>Но кажеться мне.. что можно было зделать покрасивше..


IRO>>Неподскажите?


__>Может просто воспользоваться умными указателями и тогда вопрос отпадет сам собой ?


Таки да.. но все же.
я не волшебник, я только учусь!
Re[3]: erase_ptr_container Что вы думаете?
От: Cyberax Марс  
Дата: 30.07.05 14:14
Оценка: +1
IROV.. wrote:

> __>Может просто воспользоваться умными указателями и тогда вопрос

> отпадет сам собой ?
> Таки да.. но все же.

Может стоит просто взять boost.ptr_container, где уже все есть?

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[4]: erase_ptr_container Что вы думаете?
От: IROV..  
Дата: 01.08.05 11:38
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>IROV.. wrote:


>> __>Может просто воспользоваться умными указателями и тогда вопрос

>> отпадет сам собой ?
>> Таки да.. но все же.

C>Может стоит просто взять boost.ptr_container, где уже все есть?


В следущем проете обязательно попробуем.. А так приходиться писать stl_utility


C>--

C>С уважением,
C> Alex Besogonov (alexy@izh.com)
я не волшебник, я только учусь!
Re: erase_ptr_container Что вы думаете?
От: srggal Украина  
Дата: 01.08.05 12:29
Оценка:
Здравствуйте, IROV.., Вы писали:


IRO>Но кажеться мне.. что можно было зделать покрасивше..


IRO>Неподскажите?


А сделать интервальную функцию типа for_each — не желаете ??
Re[2]: erase_ptr_container Что вы думаете?
От: IROV..  
Дата: 02.08.05 06:56
Оценка:
Здравствуйте, srggal, Вы писали:

S>Здравствуйте, IROV.., Вы писали:



IRO>>Но кажеться мне.. что можно было зделать покрасивше..


IRO>>Неподскажите?


S>А сделать интервальную функцию типа for_each — не желаете ??





std::for_each(
    Container.begin(), 
    Container.end(), 
    delete_ptr() );



Но практика показывает что удалять то надо вконце и все..
я не волшебник, я только учусь!
Re[3]: erase_ptr_container Что вы думаете?
От: srggal Украина  
Дата: 02.08.05 10:00
Оценка:
Здравствуйте, IROV.., Вы писали:

IRO>Здравствуйте, srggal, Вы писали:


S>>Здравствуйте, IROV.., Вы писали:



IRO>>>Но кажеться мне.. что можно было зделать покрасивше..


IRO>>>Неподскажите?


S>>А сделать интервальную функцию типа for_each — не желаете ??


IRO>



IRO>
IRO>std::for_each(
IRO>    Container.begin(), 
IRO>    Container.end(), 
IRO>    delete_ptr() );
IRO>



IRO>Но практика показывает что удалять то надо вконце и все..


Я имел в виду:


template< typename InIt >
    inline void destroy( InIt first, InIt last )
    {
        for (; _First != _Last; ++_First)
            delete *_First; 
    }


А чо касается того, что удалять надо все — так отчего же тогда for_each() — интервальная функция ведь тоже можно сказать что ее применяют в большинстве случаев для всего контейнера
Re[4]: erase_ptr_container Что вы думаете?
От: IROV..  
Дата: 02.08.05 10:21
Оценка:
Здравствуйте, srggal, Вы писали:

S>Здравствуйте, IROV.., Вы писали:


IRO>>Здравствуйте, srggal, Вы писали:


S>>>Здравствуйте, IROV.., Вы писали:



IRO>>>>Но кажеться мне.. что можно было зделать покрасивше..


IRO>>>>Неподскажите?


S>>>А сделать интервальную функцию типа for_each — не желаете ??


IRO>>



IRO>>
IRO>>std::for_each(
IRO>>    Container.begin(), 
IRO>>    Container.end(), 
IRO>>    delete_ptr() );
IRO>>



IRO>>Но практика показывает что удалять то надо вконце и все..


S>Я имел в виду:



S>
S>template< typename InIt >
S>    inline void destroy( InIt first, InIt last )
S>    {
S>        for (; _First != _Last; ++_First)
S>            delete *_First; 
S>    }
S>


S>А чо касается того, что удалять надо все — так отчего же тогда for_each() — интервальная функция ведь тоже можно сказать что ее применяют в большинстве случаев для всего контейнера


ты прав

может стоит и переделать
я не волшебник, я только учусь!
Re[4]: erase_ptr_container Что вы думаете?
От: srggal Украина  
Дата: 02.08.05 10:25
Оценка:
Здравствуйте, srggal, Вы писали:

S>Я имел в виду:



S>
S>template< typename InIt >
S>    inline void destroy( InIt first, InIt last )
S>    {
S>        for (; _First != _Last; ++_First)
S>            delete *_First; 
S>    }
S>


S>А чо касается того, что удалять надо все — так отчего же тогда for_each() — интервальная функция ведь тоже можно сказать что ее применяют в большинстве случаев для всего контейнера


Прошу извинить за грамматику/орфографию и синтаксис, верна только семантика

S>
S>template< typename InIt >
S>    inline void destroy( InIt first, InIt last )
S>    {
S>        for (; first != last; ++first)
S>            delete *first; 
S>    }
S>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.