Я хочу использовать list
для хранения последовательности объектов, которые содержат информацию о задачах, которые я буду выполнять. Как только один из этих объектов закончен, я больше не нуждаюсь в нем; Мне просто нужно перейти к следующему объекту в списке. Это в основном очередь.Основные вопросы о std :: list
Что касается указателей на эти объекты:
После того, как я получаю указатель на объект списка, чтобы воздействовать на, если я удалить другие элементы в списке, этот указатель остается в силе, верно? Потому что, как только я закончу свой первый объект, я перейду к следующему, и я буду pop
, что первый объект, пока я продолжаю работать со следующим объектом, который теперь становится первым объектом. По сути, я всегда буду работать над первым объектом в списке. Я хочу, чтобы указатели на существующие элементы списка не были аннулированы, даже если я удаляю другие элементы списка.
(Кстати, это основная причина, по которой я хочу использовать list
, поэтому я могу манипулировать ею, не требуя, чтобы все другие объекты списка могли быть перемещены в новое пространство в памяти, как в случае с vector
, что сделало бы это дорого)
Что касается памяти:
Когда я что-то добавить к списку, можно ожидать, что список, чтобы взять на себя ответственность и, если мой исходный элемент выходит из области видимости, пока список остается в членах области видимости переменной, мой объект все равно сохранится? И затем, как только он выскочит, объект объекта, наконец, выйдет из области видимости?
Если вы собираетесь использовать его в качестве очереди, то почему бы не использовать ['std :: queue'] (http://en.cppreference.com/w/cpp/container/queue)? –
@JoachimPileborg мои данные показывают, что 'list' лучше, если вы будете манипулировать им, итерации через него. – johnbakers