【发布时间】:2018-02-23 09:28:20
【问题描述】:
我的代码如下所示:
int multiplyBy2 (int x) {return x*2;}
int add10 (int x) {return x+10;}
int divideBy2 (int x) {return x/2;}
QVector<int> doAnything(QVector<int> list, QVector<std::function<int (int)>> methods){
for(int i = 0; i< methods.size(); i++){
std::transform(list.begin(), list.end() , list.begin() ,methods.at(i));
}
return list;
}
int main(int argc, char *argv[])
{
QVector<int> list {1,2,3,4,5};
QVector<std::function<int (int)>> functions {multiplyBy2 , add10 , divideBy2};
auto result = doAnything(list, functions);
std::for_each(result.begin(), result.end(), [](int i){qDebug() << i;});
return 0;
}
函数 doAnything 对值列表执行函数列表。
此代码运行良好。
现在我已经尝试在 for_each 循环中执行此操作:
std::for_each(methods.begin(), methods.end(),
std::transform (list.begin(), list.end(), list.begin() , varFromForEach));
我的问题是我不知道如何从 for_each 循环中的 for_each 循环访问变量,例如 Kotlin 中的 it 或 scala 中的 _
任何人都可以帮助我吗?谢谢!
【问题讨论】:
-
看看
std::for_each。 函数的签名应该等同于:void fun(const Type &a);签名不需要有const &。Type类型必须使得InputIt类型的对象可以被取消引用,然后隐式转换为Type。 在这种情况下,a是“for_each 循环中的变量”。跨度>