Там нет выигрыш в производительности по себе, но потребность в лямбда пришел как следствие широкого принятия СТЛ и его дизайнерские идеи.
В частности, алгоритмы STL часто используют функторы. Без лямбда эти функторы должны быть предварительно объявлены для использования. Lambdas позволяет иметь «анонимных», работающих на месте функторов.
Это важно, потому что существует много ситуаций, когда вам нужно использовать функтор только один раз, и вы не хотите давать ему имя по двум причинам: вы не хотите загрязнять пространство имен и в этих конкретных случаях имя, которое вы даете, является либо неопределенным, либо очень длинным.
Я, например, использую STL много, но без C++ 0x Я использую гораздо больше для циклов(), чем для алгоритма for_each() и его кузенов. Это потому, что если бы я использовал for_each() вместо этого, мне нужно было бы получить код внутри цикла и объявить для него функтором. Кроме того, все локальные переменные перед циклом не будут доступны, поэтому мне нужно будет написать дополнительный код, чтобы передать их в качестве параметров конструктору-функтора или эквивалент другой вещи. Как следствие, я склонен не использовать for_each(), если нет сильной мотивации, иначе код будет длиннее и труднее читать.
Плохо, потому что хорошо известно, что использование for_each() и подобных алгоритмов дает гораздо больше возможностей компилятору & для оптимизации, включая автоматический параллелизм. Таким образом, косвенно, лямбда будет способствовать более эффективному коду.
Я возьму "исключенного третьего" за $ 500 Алекс. –
Итак, единственная причина, по которой вы можете думать о языковой функции, - «она идет быстрее» или «это как быстрая полоса на рисовой ракете»?Каков новый латинский термин для «доказательства из-за отсутствия воображения»? –
Это было поучительно. Спасибо всем за ответы. – LoudNPossiblyWrong