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

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

Изменено 26.07.2023 6:32 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. Ну да, в 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:


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


Ну да, в C++ лябмды не выглядят столь компактными как в "нормальных" языках, но мы же не состязаемся в синтаксическом кариесе, правда?