Есть ли смысл использовать собственные реализации базовых АТД в C++?

220
03 августа 2021, 23:40

Задался вопросом, имеет ли смысл в настоящее время использовать собственные реализации таких типов данных как связный список/стек/очередь/словарь? Именно для выполнения реальных задач, а не в учебных целях. Казалось бы, стандарт языка С++ на данный момент предоставляет большое количество инструментов, но несмотря на это, в некоторых проектах всё ещё продолжают использовать самописные реализации тех или иных АТД. В том редком случае, когда стандартные средства уступают в производительности самописным, логично, что выбор вряд ли будет в пользу стандартных. Но в большинстве случаев нет какой-либо критичной разницы между двумя подходами. Так стоит ли игра свеч?

Answer 1
  1. Реализация контейнеров и алгоритмов в STL или Boost - веселая штука. Их делают максимально унифицированными (в основном для покрытия максимального кол-ва задач) и очень тщательно проверяют на быстродействие и т.д.
  2. Их пишут не один десяток людей, а ревьювят его вообще все ). Это дает гарантию что конкретная реализация будет максимально удовлетворять потребностям большинства.
  3. Время когда люди писали свои "общие" контейнера и алгоритмы наверное прошло. Но во в задачах (пример: Вам нужен произвольный доступ, и ассоциотивность) - да надо писать свой костыль.
  4. В стандартах очень много ассемблерных вставок для оптимизации производительности, и поэтому я не думаю что компилятор родит более вменяемый код, чем тот над которым посидели оптимизаторы.

ИМХО: В реальных задачах надо брать готовое, а не рожать что-то (ибо дорого) сейчас вообще большинство ничего не кодит (дешевле найти готовое и пришить), что разумеется пичалька

READ ALSO
Наследование методов в C++

Наследование методов в C++

Хочу реализовать класс Vector как сущность линейного пространства, а затем от него наследовать обычный DoubleVector и MatrixДля этого мне бы хотелось...

121
jQuery.get() исходный код

jQuery.get() исходный код

Как ориентироваться в src папке проекта jquery? Где я могу найти конкретно этот jQueryget метод?:

131
Развернуть список 4-х уровневый список в Laravel

Развернуть список 4-х уровневый список в Laravel

Всем привет, помогите пожалуйста реализовать данный скриптЕсть 4 уровненный список через цикл в виде Laravel

130