История изменений
Исправление khrundel, (текущая версия) :
не гони. список это упорядоченное множество элементов произвольного(!!!) типа, аллокированных неспецифицированным образом.
Ну да, если тебе нужен произвольный тип и ты в базовый тип добавил ссылки на предыдущий/следующий, тогда у тебя может что-то и выйдет. Но если на практике, то грузом у тебя какие-то настоящие типы, то список у тебя будет типа list<unique_ptr<Base>>
и это будет аналогом vector<unique_ptr<Base>>
. Кстати, не факт что vector<unique_ptr<Base>>
будет медленнее чем даже список с полями next/prev в базовом классе.
заменять одно другим, это все равно что заменять чайник велосипедом.
Заменять список вектором, конечно, нельзя. Если тебе препод задал сделать лабу со списком, а ты притащишь с вектором, то не зачтут. Ну или если апишка требует данные в виде списка. Других случаев, когда применение списка осмысленно я не видел.
преимущество списка - где размещены элементы - неважно, тип может быть любой совместимый по полям next/prev, вставка/удаление требуют минимума команд. недостатки - на каждый элемент требуются два лишних поля.
Ты тоже по книжкам из 60х учился? Главный недостаток - не дружит с кэшем. На сраные 2 указателя всем вообще плевать.
если на русте двусвязный список плохо поддерживается… тем хуже для руста.
Я бы сформулировал иначе. Если в «руст» не могут специалисты считающие что недостаток списка - лишние 2 указателя, то тем лучше для «руста».
Исходная версия khrundel, :
не гони. список это упорядоченное множество элементов произвольного(!!!) типа, аллокированных неспецифицированным образом.
Ну да, если тебе нужен произвольный тип и ты в базовый тип добавил ссылки на предыдущий/следующий, тогда у тебя может что-то и выйдет. Но если на практике, то грузом у тебя какие-то настоящие типы, то список у тебя будет типа list<unique_ptr<Base>>
и это будет аналогом vector<unique_ptr<Base>>
. Кстати, не факт что vector<unique_ptr<Base>>
будет медленнее.
заменять одно другим, это все равно что заменять чайник велосипедом.
Заменять список вектором, конечно, нельзя. Если тебе препод задал сделать лабу со списком, а ты притащишь с вектором, то не зачтут. Ну или если апишка требует данные в виде списка. Других случаев, когда применение списка осмысленно я не видел.
преимущество списка - где размещены элементы - неважно, тип может быть любой совместимый по полям next/prev, вставка/удаление требуют минимума команд. недостатки - на каждый элемент требуются два лишних поля.
Ты тоже по книжкам из 60х учился? Главный недостаток - не дружит с кэшем. На сраные 2 указателя всем вообще плевать.
если на русте двусвязный список плохо поддерживается… тем хуже для руста.
Я бы сформулировал иначе. Если в «руст» не могут специалисты считающие что недостаток списка - лишние 2 указателя, то тем лучше для «руста».