У меня есть список указателей, которые мне больше не нужны. Для того, чтобы удалить все из них, я могу нормально просматривать список:Удаление содержимого std :: list
for (T* ptr: mylist) {
delete ptr;
}
Или я могу удалить первый или последний элемент, пока список не пуст:
while (!mylist.empty()) {
delete mylist.front(); //or mylist.back()
mylist.pop_front(); //or mylist.pop_back()
}
Что является предпочтительным способом, как для производительности и ясности?
'std :: list :: clear' совершенно новый для меня lal. Однако хорошее предложение. – user6245072
Обратите внимание, что 'clear' удалит все элементы из списка. Умные указатели при удалении также освободят память, которую они держат. Но обычные указатели не будут. Таким образом, этот метод работает только с интеллектуальными указателями. В любом случае, теперь вручную удаление объектов считается плохой практикой, поскольку оно слишком подвержено ошибкам. –
Приятно знать, что последний бит. Спасибо за все. – user6245072