Вы "знаете", что функциональные объекты подвергаются накладным расходам? Возможно, вам следует перепроверить свои факты. :)
Обычно использование алгоритма STL с функциональным объектом не требует дополнительных затрат по сравнению с циклом, выполненным вручную. Наивный компилятор должен будет повторно вызывать operator()
на функторе, но это тривиально для встроенного и, следовательно, накладные расходы равны нулю.
Лямбда-выражение - это не что иное, как синтаксический сахар для функционального объекта. Код преобразуется компилятором в объект функции, поэтому он также имеет нулевые накладные расходы.