Стоит ли отдавать предпочтение алгоритмам STL, а не ручным циклам? - PullRequest
25 голосов
/ 25 сентября 2008

Кажется, я вижу здесь больше циклов for для итераторов в вопросах и ответах, чем for_each (), transform () и тому подобное. Скотт Мейерс предполагает, что алгоритмы stl предпочтительнее , или, по крайней мере, он сделал это в 2001 году. Конечно, их использование часто означает перемещение тела цикла в функцию или функциональный объект. Кто-то может посчитать это неприемлемым осложнением, а кто-то может решить, что лучше решить проблему.

Итак ... должны ли алгоритмы STL быть более предпочтительными, чем циклы, свернутые вручную?

Ответы [ 11 ]

0 голосов
/ 25 сентября 2008

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

Вероятно, верно, что использование transform или for_each - правильное решение, но оно не более эффективно, и рукописные циклы по своей природе не опасны. Если разработчику потребуется полчаса, чтобы написать простой цикл, а не полдня, чтобы получить правильный синтаксис для transform или for_each и переместить предоставленный код в функцию или объект функции. И тогда другие разработчики должны будут знать, что происходит.

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

Скажем так: если бы я сказал своему боссу, что провел день, превращая петли ручной работы в for_each и преобразовывая вызовы, я сомневаюсь, что он был бы очень рад.

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