Когда следует использовать алгоритмы STL вместо собственных? - PullRequest
31 голосов
/ 06 июля 2010

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

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

Я никогда не видел код C ++, который использует алгоритмы STL.От примера кода в статьях веб-страницы до проектов с открытым исходным кодом, я не видел их использования.

Они используются чаще, чем кажется?

Ответы [ 13 ]

1 голос
/ 08 июля 2010

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

Для большинства землян ответ НИКОГДА!

1 голос
/ 08 июля 2010

Я бы не использовал STL в двух случаях:

  1. Когда STL не предназначен для вашей задачи. STL является почти лучшим для общих целей. Однако для конкретных приложений STL не всегда может быть лучшим. Например, в одной из моих программ мне нужна огромная хеш-таблица, в то время как эквивалентность хеш-таблицы STL / tr1 занимает слишком много памяти.

  2. Когда вы изучаете алгоритмы. Я один из немногих, кто любит изобретать велосипеды и многому научиться в этом процессе. Для этой программы я переопределил хеш-таблицу. Это действительно заняло у меня много времени, но в итоге все усилия окупились. Я узнал много вещей, которые приносят большую пользу моей будущей карьере программиста.

0 голосов
/ 06 июля 2010

Они используются чаще, чем кажется?

Я никогда не видел, чтобы они использовались; кроме как в книгах. Может быть, они используются в реализации самого STL. Возможно, они станут более используемыми, потому что их легче использовать (см., Например, Лямбда-функции и выражения ), или даже станут устаревшими (см., Например, цикл на основе диапазона ) в следующей версии C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...