" аккуратный перк разработки, открытый для злоупотреблений плохими программистами, пытающимися выглядеть круто? " ... как бы вы это ни называли, это делает код лот более читабельным и понятнымЭто не увеличивает производительность.
Чаще всего программист выполняет итерации по диапазону элементов (поиск элемента, накопление элементов, сортировка элементов и т. Д.).Используя функциональный стиль, вы сразу видите, что программист намеревается сделать, в отличие от использования для циклов, где все «выглядит» одинаково.
Сравните алгоритмы + лямбда:
iterator longest_tree = std::max_element(forest.begin(), forest.end(), [height]{arg0.height>arg1.height});
iterator first_leaf_tree = std::find_if(forest.begin(), forest.end(), []{is_leaf(arg0)});
std::transform(forest.begin(), forest.end(), firewood.begin(), []{arg0.trans(...));
std::for_each(forest.begin(), forest.end(), {arg0.make_plywood()});
сстарые циклы forschool;
Forest::iterator longest_tree = it.begin();
for (Forest::const_iterator it = forest.begin(); it != forest.end(); ++it{
if (*it.height() > *longest_tree.height()) {
longest_tree = it;
}
}
Forest::iterator leaf_tree = it.begin();
for (Forest::const_iterator it = forest.begin(); it != forest.end(); ++it{
if (it->type() == LEAF_TREE) {
leaf_tree = it;
break;
}
}
for (Forest::const_iterator it = forest.begin(), jt = firewood.begin();
it != forest.end();
it++, jt++) {
*jt = boost::transformtowood(*it);
}
for (Forest::const_iterator it = forest.begin(); it != forest.end(); ++it{
std::makeplywood(*it);
}
(я знаю, что этот фрагмент кода содержит синтаксические ошибки.)