Информация об изменениях

Сообщение Re[3]: Может я чего-то не понимаю.... от 26.07.2023 6:18

Изменено 26.07.2023 6:56 rg45

Re[3]: Может я чего-то не понимаю....
Здравствуйте, 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:


numbers_in | filtered([](int x){ return !x % 2; }) | transformed([](int x){ return x / 2; });


Ну да, в C++ лябмды не выглядят столь компактными как в "нормальных" языках, но мы же не состязаемся в синтаксическом кариесе, правда?
Re[3]: Может я чего-то не понимаю....
Здравствуйте, 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++ лябмды не выглядят столь компактными как в "нормальных" языках, но мы же не состязаемся в синтаксическом кариесе, правда?