Re[3]: Может я чего-то не понимаю....
От: rg45 СССР  
Дата: 26.07.23 06:18
Оценка: +2 :)
Здравствуйте, 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++ лябмды выглядят не столь компактными как в "нормальных" языках, но мы же не состязаемся в синтаксическом кариесе, правда?
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 26.07.2023 7:00 rg45 . Предыдущая версия . Еще …
Отредактировано 26.07.2023 6:59 rg45 . Предыдущая версия .
Отредактировано 26.07.2023 6:57 rg45 . Предыдущая версия .
Отредактировано 26.07.2023 6:56 rg45 . Предыдущая версия .
Отредактировано 26.07.2023 6:32 rg45 . Предыдущая версия .
Отредактировано 26.07.2023 6:29 rg45 . Предыдущая версия .
Отредактировано 26.07.2023 6:22 rg45 . Предыдущая версия .
Отредактировано 26.07.2023 6:21 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.