У меня был хороший взгляд на мои варианты STL сегодня. Тогда я подумал о чем-то.
Кажется, связанный список (std :: list) имеет ограниченное использование. А именно, это только кажется
полезно, если
Последовательный порядок элементов в моем контейнере имеет значение, и
Мне нужно стереть или вставить элементы посередине.
То есть, если я просто хочу получить много данных и не заботиться о их порядке, мне лучше использовать std :: set (сбалансированное дерево), если я хочу поиск O (log n) или std :: unordered_map (карта хешей), если я хочу O (1) ожидаемый поиск или std :: vector (непрерывный массив) для лучшей ссылочной локализации, или std :: deque (двусторонняя очередь), если я нужно вставить спереди и сзади.
OTOH, если порядок имеет значение, мне лучше использовать std :: vector для лучшей привязки и меньших накладных расходов или std :: deque, если требуется большое изменение размера.
Итак, я что-то упустил? Или связанный список просто не так хорош? За исключением средней вставки / стирания, с какой стати кто-то захочет ее использовать?