в расте?
.remove() вроде
так его искать придётся же, я хочу как в С++ по итератору удалить чтобы за О(н) не искать
Всмысле по итератору удалить? По итератору будет O(n) как раз
Смотри вот сюда и выбери коллекция которая тебе нужна https://doc.rust-lang.org/std/collections/index.html#sequences
0. Выкинуть двухсвязный список. 1. Да, из плюсового кода тоже. 2. Порешать различные олимпиады, чтобы понять, что двухсвязные списки, в общем-то, не нужны. 3. Только в редчайших случаях ими пользоваться.
ээ, списки это очень полезная структура и нужная... И если её добавляют в стандартную библиотеку она должна поддерживать базовые операции
https://kjellkod.wordpress.com/2012/02/25/why-you-should-never-ever-ever-use-linked-list-in-your-code-again/
если на расте нельзя написать нормальный двусвязный список это не значит что его нельзя использовать
Написать можно. Но не надо.
2, 3 - ничего себе заявление
мне, как человеку, что не супер хорошо прошарен в алгоритмах, а тем более в оптимизациях, интересно, неужели linked-list такая популярная структура данных. Понятно, что она базовая и простая в логике, но медленнее индексных (если правильно их так называть) структур данных вроде вектора, а места, где вот действительно необходим именно linked-list (настолько, что без него решение было бы уродским или просто невозможным) я придумать не могу, так как, повторюсь, опыта в таком нет. Приходит в голову фп-стиль, но я уверен, там можно либо оптимизациями, либо какими-то другими структурами данных, избавиться от него. Я против какого-то радикального подхода, вроде "в нашем языке linked-list запрещен", но также интересно, насколько он важен для Вас, как разработчиков, потому что мне не приходилось его использовать вне алгоритмических задач, только если яп его сам не навязывает, как дефолт, например.
А. Вот увидел это сообщение. Почему 2 и 3, и в случае 3, какие случаи есть, где это оправдано?
Ага, вот такое без извращений с linked list-ами, кажется, сделать не получится… И тут сплайсинг обязателен
что же там сложного?
Сейф апи сделать сложно, не?
Уфф… Я забыл скрин запостить………
ну так много где используется -- при разрешении коллизий в hashmap, при реализации non blocking data structures, всякие там skip list и вообще дофига где
С++ как то справляется, не помню чтобы кто то жаловался что сломал себе лист через erase
В C++ нет safe api…
Не справляется, но там и цели такой нет
по такой логике можно запретить всё и сказать что можн осовершить ошибку
В этом и смысл
VecDeque в худшем случае пойдёт
Ну, тогда будет O(m * n)
Обсуждают сегодня