STL против алгоритмов - PullRequest
       30

STL против алгоритмов

0 голосов
/ 26 апреля 2020

я знаю, что это очень глупый вопрос. Я задаю вопрос как новичок, поскольку я изучаю DsAl go.

Итак, давайте рассмотрим пример простого вращения отсортированного массива.

Есть два подхода, которым я могу следовать. 1.STL 2. Без STL

Я могу просто сделать это с помощью std::rotate или использовать алгоритм жонглирования. Сложность Big-O для обоих подходов равна O (n).

Итак, если я могу просто сделать код из двух строк, зачем мне нужно изучать разные алгоритмы?

Я действительно смущен, каким образом мне следует go с.

Ответы [ 2 ]

6 голосов
/ 26 апреля 2020

Если в стандартной библиотеке есть алгоритмы, которые выполняют вашу работу, , вы должны их использовать! Вот несколько причин, почему:

  1. Это просто, вы не можете придется переписать его.
  2. Он тщательно протестирован и гораздо менее вероятно, что будет содержать ошибки, чем то, что вы выкатили сами.
  3. Вероятно, это реализовано теми же людьми, которые написали компилятор, так что, вероятно, оптимизировано, насколько это возможно. У них также было больше времени, чтобы оптимизировать этот код.
  4. Это более явный и простой для понимания любой, кому придется читать ваш код позже.
  5. Когда вы переключаетесь на более новый / лучший компилятор, Ваш код может быть быстрее без вашей работы.
2 голосов
/ 26 апреля 2020

Конечно, вы можете сделать свой код 2 лайнера. Так должно быть. Вам следует использовать стандартные библиотеки , так как они написаны наилучшим образом с учетом множества факторов.

Теперь возникает вопрос: зачем изучать алгоритм:

Библиотеки предоставляют абстрактные реализации. Вы не знаете, что происходит за кулисами.

Некоторые библиотеки имеют открытый исходный код, с помощью которого вы можете узнать лучшие практики написания кодов по мере их разработки лицами, которые пишут компиляторы.

Теперь, если вы хотите реализовать какое-либо использование В случае, когда требуются определенные ограничения по времени и пространственной сложности, вы должны знать, что такое алгоритм, как он работает и подходит ли он для варианта использования.

Изучая алгоритмы, вы также можете разработать новые алгоритмы для определения c варианты использования, которых нет в стандартных библиотеках. Библиотеки просто предоставляют решения для базовых c алгоритмов, а не всего.

Изучая алгоритмы, вы можете разрабатывать свои собственные библиотеки и публиковать их c, чтобы другие разработчики могли использовать их для экономии времени и создания надежный код.

...