Как очистить список в C#?
Если под «списком» вы подразумеваете List<T> , потом ясный метода является то, что вы хотите:
вы должны привыкнуть искать документацию MSDN по этим вещам.
вот как быстро искать документацию по различным битам этого типа:
- Список Класс обеспечивает класса (вот с чего надо было начинать)
- список.Четкий Метод — предоставляет документацию по методу Clear
- список.Свойство Count — предоставляет документацию по количеству недвижимости
все эти запросы Google перечисляет набор ссылок, но обычно вы хотите первый, который google дает вам в каждом случае.
дать альтернативный ответ (кому нужны 5 одинаковых ответов?):
имейте в виду, что все остальные ссылки на старый список не очищается (в зависимости от ситуации, это может быть то, что вы хотите). Кроме того, с точки зрения производительности он обычно немного медленнее.
Вариант №1: Использовать очистить() функция для очистки List<T> и сохранить его емкость.
Count имеет значение 0, а ссылки на другие объекты из элементов коллекция также выпущена.
Вариант № 2 — Использовать очистить() и TrimExcess() функции установить List<T> в первоначальное государство.
Count имеет значение 0, а ссылки на другие объекты из элементов коллекция также выпущена.
обрезка пустой List<T> устанавливает емкость списка в емкость по умолчанию.
определения
графа = количество элементов, которые фактически находятся в List<T>
емкости = общее количество элементов, которые может содержать внутренняя структура данных без изменения размера.
Очистка std::list с удалением объектов
Суть в том, что я циклически создаю объекты и помещаю их в list. Но как мне потом средствами самого list удалить все объекты из памяти? Или прийдётся ето делать вручную?
Вывод программы такой:
деструкторы класса не срабатывают. Может, я не правильно понимаю документацию, но здесь http://www.cplusplus.com/reference/list/list/clear/ написано:
почему тогда в моём случае деструкторы не вызываются?
.Ты в списке хранишь указатели на обьекты, а не сами обьекты. «деструктор» указателя ничего не делает. Удаляй вручную или используй умные указатели.

почему тогда в моём случае деструкторы не вызываются?
Потому что хранишь указатели, а не сами объекты. Либо смарт поинтеры юзай, либо руками удаляй.
Вариант со смарт указателями. Компилировать с флагом -std=c++0x или -std=c++11.
А, в общем-то, в списке лучше хранить объекты по значению, а не указатели. Т.е. вместо list<unique_ptr<MyClass>> или list<MyClass*> использовать просто list<MyClass>.
в списке лучше хранить объекты по значению, а не указатели
очень плохой совет, если он звучит без дополнительных оговорок

Нужно быть готовым к тому, что при копировании листа будут тупо копироваться все объекты. Это, конечно, не вектор, но все равно может привести к неприятным эффектам. Не могу представить случая, когда действительно лучше хранить в контейнере сам объект, а не smart pointer на него. Разве что POD. Это и есть список оговорок, каковым надо снабжать оспариваемое мной утверждение.

Нужно быть готовым к тому, что при копировании листа будут тупо копироваться все объекты.
да если по ссылке низя
Не могу представить случая, когда действительно лучше хранить в контейнере сам объект, а не smart pointer на него
когда не можешь просто этого сделать

А хранить простой указатель на объект в писках и векторах не возбраняется? Ну, естественно при условии, что в деструкторе объекта буду пробегать по этому списка и для каждого вызывать delete?

это не Exception-Safe Coding
А, в общем-то, в списке лучше хранить объекты по значению, а не указатели.
А если у меня в классе будет щё один list или string, он мне не вылетит в segfault в один прекрасный момент?
List<T>.Clear Method
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Removes all elements from the List<T>.
Implements
Examples
The following example demonstrates the Clear method and various other properties and methods of the List<T> generic class. The Clear method is used at the end of the program, to remove all items from the list, and the Capacity and Count properties are then displayed.
Remarks
Count is set to 0, and references to other objects from elements of the collection are also released.
Capacity remains unchanged. To reset the capacity of the List<T>, call the TrimExcess method or set the Capacity property directly. Decreasing the capacity reallocates memory and copies all the elements in the List<T>. Trimming an empty List<T> sets the capacity of the List<T> to the default capacity.