Комментарии 39
Я составил список популярных алгоритмов, которые с большой вероятностью понадобятся на собеседовании.А на практике они понадобятся?
С огромной вероятностью понадобятся
А вы можете показать ваши личные проекты и рассказать, где там эти алгоритмы применяются и в каких объёмах? Если, конечно, это не секрет.
Обход в глубину, Обход в ширину и разные вариации с деревьями поиска. Но сфера софта была специфическая, в частности — визуализация и укладка графов. И разработчик — прям реализовывал это всё в коде со своими нюансами.
[offtopic] А что это за ребята?
А-а, сорри, это же рядом было :-) https://habr.com/ru/post/532726/
www.youtube.com/watch?v=WsX2pf5n4zM
Мне действительно интересно, без подвоха.
Ответ: Там где элементы контейнера не имеют (и не могут иметь) конструктора копирования и перемещения.
Мне интересно в каких задачах они используются, а не при каких обстоятельствах. То есть без привязки к языку вообще.
Вот, к примеру, коллизии при вычислении хеш-функции можно разрешить добавив связный список к элементу целевого массива хеш-таблицы. Но это очень низкоуровневое и редкое применение. Кроме того, можно и массивом обойтись.
А где списки применяются для более практических задач?
Полиморфные аллокаторы внесли смуту в выбор, но это пока что не частый кейс.
Всё остальное — довольно таки слишком специфические требования. Совместные владения объектами, контейнеры где часто не больше 1го элемента (и где SOO не отрабатывает), либо опять же особенности копирования объектов (с сайд эффектами и исключениями) которых необходимо избежать.
Там где важна производительность односвязных и двусвязных списков в коде не будет.
Мне недавно при реализации LRU кэша пришлось писать двусвязный список, чтобы алгоритм работал амортмзированно за O(1).
MSC Lock использует односвязные списки
При реализации какого-то ивент-лупа может понадобиться односвязный список
Это из того, что я за полгода могу вспомнить
Ну и сколько будет такое собеседование длиться? Одних вопросов часа на три.
А, то есть правило пяти, скажем — это не дебри? И что, на всех проектах используется "современное" подмножество (интересно, кстати, что под эти подразумевается) и со старым кодом не надо взаимодействовать?
Там по современному языку всего то 3 книжки толковых и не сильно тяжелых.
Промышленное кодирование на современном с++ кратно проще того, что было 15 лет назад.
C++ прямо таки завораживает юных студентов, только вот долго его учить и работать с ним долго приходится, дорого обходится
Как проходит собеседование начинающего разработчика на С++: что нужно знать и как подготовиться