Вам придется выполнить итерации списка и delete
динамически распределенных объектов, прежде чем очистить список.
При использовании контейнеров с новыми
указатели, пожалуйста, не забудьте удалить
указатели перед контейнером
уничтожены.
О проблеме с использованием insert()
: Я не очень уверен, с какой проблемой вы столкнулись. Из объяснения, я полагаю, вы пытаетесь вставить объекты Class
в список, где в списке содержится указатель на Class
. Не могли бы вы уточнить проблему со вставкой?
Псевдокод для удаления динамически размещаемых объектов:
версия 1: простая
list<Class*>::const_iterator iter = m_ClassList.begin();
list<Class*>::const_iterator endIter = m_ClassList.end();
for(;iter!= endIter ; ++iter)
{
delete *iter;
}
ClassList.clear();
версия 2: лучшая версия с использованием for_each
struct DeleteClassObject
{
//Functor
template<typename T>
void operator()(const T* ptr) const
{
delete ptr;
}
}
//loops through list and deletes the dynamically allocated objects using
//functor DeleteClassObject
for_each( m_ClassList.begin(), m_ClassList.end(), DeleteClassObject ());
DeleteClassObject.clear()