Изучение std function: все, что вам нужно знать
std::function - это обертка для функций, которая позволяет хранить и передавать функции как объекты. Она может хранить любые типы функций (стандартные функции, функции-члены классов, лямбда-функции и т.д.).
Пример использования std::function выглядит следующим образом:
c++
#include
#include
void foo(int x)
{
std::cout << "foo(" << x << ")" << std::endl;
}
int main()
{
std::function f = foo;
f(42); // вызываем функцию foo через объект f
return 0;
}
В этом примере мы создаем объект f типа std::function, который может хранить функции с одним аргументом типа int и возвращающие void. Затем мы присваиваем ему функцию foo и вызываем ее через объект f.
std::function также может использоваться для передачи функций в другие функции:
c++
#include
#include
void call_function(std::function f, int x)
{
f(x); // вызываем функцию, которая хранится в объекте f с аргументом x
}
void foo(int x)
{
std::cout << "foo(" << x << ")" << std::endl;
}
int main()
{
call_function(foo, 42); // передаем функцию foo в функцию call_function
return 0;
}
В этом примере мы создаем функцию call_function, которая принимает объект f типа std::function и аргумент x, переданный в функцию. Затем мы вызываем функцию, которая хранится в объекте f, с аргументом x. В функции main мы передаем функцию foo в функцию call_function и передаем ей аргумент 42.
Использование std::function может существенно упростить работу с функциями в C++ и добавить гибкости в программу.