C ++ функции высшего порядка

Я начал изучать C ++ и не понимаю, как работают функции более высокого порядка в C ++. Может кто-нибудь объяснить функции c ++ 11 высшего порядка на простом примере? Я не могу найти много информации по этой теме в Интернете.

0

Решение

Многие из стандартных функций C ++ в <algorithm> заголовок являются примерами функций высшего порядка.

Например, count_if Функция принимает унарный предикат, который является типом вызываемой функции, и возвращает количество объектов, соответствующих данному предикату. поскольку count_if является функцией, которая принимает другую функцию в качестве аргумента, это делает ее функция высшего порядка.

В этом примере не используются никакие функции C ++ 11, но C ++ 11 просто расширяет существующую поддержку функций высшего порядка в предыдущих стандартах C ++:

#include <algorithm>
#include <iostream>
#include <vector>

bool is_even(int i) {
return i % 2 == 0;
}

int main(int argc, char *argv[]) {
std::vector<int> v;
for (int i = 0; i < 10; ++i) {
v.push_back(i);
}
std::cout
<< "count = "<< std::count_if(v.begin(), v.end(), &is_even)
<< std::endl;

return 0;
}

Преобразование этого в пример, который использует некоторые функции C ++ 11, довольно тривиально:

#include <algorithm>
#include <iostream>
#include <vector>

int main(int argc, char *argv[]) {
std::vector<int> v = { 0, 1, 2, 3, 4, 5 };

std::cout
<< "count = "<< std::count_if(v.begin(),
v.end(),
[](int i) -> bool { return i % 2 == 0; })
<< std::endl;

return 0;
}
4

Другие решения