Здравствуйте, bnk, Вы писали:
R>for(int x : numbers_in) if (!(x % 2)) numbers_out.push_back(x / 2);
bnk>Особенно сравнивая с нормальными языками
bnk>numbers_in.filter(x => x % 2 == 0).map(x => x / 2)
Ну ты же жульничаешь — ты не положил числа в выходной массив. Ты предоставть законченное решение, тогда и сравним.
И запись, с которой сравниваешь, удалил зачем-то. Наверное, для того, чтобы сделать сравнение максимально наглядным
А во-вторых, в С++ тоже можно решить эту задачу в функциональном стиле и с lazy evaluation. Необходимая поддержка для этого давно уже есть в boost и сравнительно недавно появилась в стандартной библиотеке, в std::ranges:
http://coliru.stacked-crooked.com/a/dda09192df73cb9d
numbers_in | filtered([](int x) { return !(x % 2); }) | transformed([](int x) { return x / 2; })
Ну да, в C++ лябмды выглядят не столь компактными как в "нормальных" языках, но мы же не состязаемся в синтаксическом кариесе, правда?