我进行了搜索,但是找到的最近的link甚至与我的问题不符。
我有一个std::vector<double> mydata
数组。我喜欢在调用成员函数时使用for_each
作为mydata
数组。该成员函数接受两个参数。一个是mydata
数组的每个元素,另一个是另一个数组的int*
。我喜欢
::std::for_each (mydata.begin(), mydata.end(), train(net));
这给了我一个train
函数的编译错误,不需要一个参数。如果没有int*
,我知道如何使用for_each。
我的火车功能
void train(double const & data, int* d){}
我怎样才能让它发挥作用? 感谢
答案 0 :(得分:5)
尝试使用lambda函数:
std::for_each (mydata.begin(), mydata.end(), [&](double d)
{
train(d, net);
});
答案 1 :(得分:4)
如果你有C ++ 11,你可以使用std::bind
:
using namespace std::placeholders; // For `_1`
std::for_each (mydata.begin(), mydata.end(),
std::bind(&MyClass::train, this, _1, net));
这里将使用三个参数调用member-function:第一个是this
指针,它始终是所有成员函数中隐藏的第一个参数。第二个参数是传递给std::bind
创建的可调用对象的第一个参数,第三个参数是net
变量。