LINUX.ORG.RU

История изменений

Исправление 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 указателя, то тем лучше для «руста».