Ваш текущий код верен, он удалит все.
Однако я бы порекомендовал вам не создавать свой список динамически, поскольку он уже сохраняет свои внутренние данные динамически.Затем используйте std::unique_ptr
для автоматического удаления.
Вместо:
std::list<std::pair<MyClass,MyClass> * > * myList=new std::list<std::pair<MyClass,MyClass> * >();
Это:
std::list<std::unique_ptr<std::pair<MyClass, MyClass>>> myList;
Теперь, когда вы удаляете и элемент из вашего list std::unique_ptr
удалит его для вас.
Однако в вашем конкретном примере действительно нет необходимости хранить ваши элементы как указатели для начала, так какэто владеющий контейнер (ответственный за удаление его содержимого).
Так что вы можете просто сделать это:
std::list<std::pair<MyClass, MyClass>> myList;
И вообще забыть об указателях.