在C++中,std::for_each
是一个算法,用于对指定范围内的元素执行特定操作。std::function
是一个通用的可调用对象包装器,可以存储任何可调用目标(如函数、lambda表达式或bind表达式)。
要在std::for_each
中调用std::function
,您需要提供一个函数或lambda表达式作为操作。以下是一个简单的示例,说明如何在std::for_each
中使用std::function
:
#include<algorithm>
#include<functional>
#include<iostream>
#include<vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// 定义一个std::function对象,用于存储要在std::for_each中调用的函数
std::function<void(int)> print_number = [](int n) {
std::cout << n << " ";
};
// 使用std::for_each算法和print_number函数对数字向量进行操作
std::for_each(numbers.begin(), numbers.end(), print_number);
return 0;
}
在这个示例中,我们使用std::function
对象print_number
存储了一个lambda表达式。然后,我们使用std::for_each
算法对numbers
向量进行操作,对每个元素调用print_number
函数。
请注意,这个示例中的std::function
对象是可选的。您也可以直接在std::for_each
中使用lambda表达式,如下所示:
std::for_each(numbers.begin(), numbers.end(), [](int n) {
std::cout << n << " ";
});
总之,要在std::for_each
中调用std::function
,您需要提供一个可调用目标(如函数、lambda表达式或bind表达式),并将其传递给std::for_each
算法。
领取专属 10元无门槛券
手把手带您无忧上云