C++ 在lambda表达式中使用外部函数
是否可以在lambda表达式中调用外部函数?如果不可以,是否有其他方法使用transform和外部函数来实现这一点C++ 在lambda表达式中使用外部函数,c++,transform,std,C++,Transform,Std,是否可以在lambda表达式中调用外部函数?如果不可以,是否有其他方法使用transform和外部函数来实现这一点 int half(int x) { return x / 2; } int main() { std::vector<int> test(5); std::transform(test.begin(), test.end(), test.begin(), []() { return half(4); }); return 0; } inthalf(intx){返回
int half(int x) { return x / 2; }
int main() {
std::vector<int> test(5);
std::transform(test.begin(), test.end(), test.begin(), []() { return half(4); });
return 0;
}
inthalf(intx){返回x/2;}
int main(){
性病媒试验(5);
std::transform(test.begin()、test.end()、test.begin()、[](){return half(4);});
返回0;
}
是。事实上,代码的唯一问题是lambda应该接受int
。使用该修复程序,您的代码:
inthalf(intx){返回x/2;}
int main(){
性病媒试验(5);
std::transform(test.begin(),test.end(),test.begin(),[](int){return half(4);});
// ^^^
返回0;
}
正如杰弗里所说,这是可能的,也是常见的。但是,std::transform
将一元运算或二元运算作为其最终参数。您可能想要更像:
static int half(int x) { return x / 2; }
int main() {
std::vector<int> test(5);
std::transform(test.begin(), test.end(), test.begin(), [](int value) {
return half(value);
});
return 0;
}
staticinthalf(intx){returnx/2;}
int main(){
性病媒试验(5);
std::transform(test.begin()、test.end()、test.begin()、[](int值){
返回一半(值);
});
返回0;
}
static int half(int x) { return x / 2; }
int main() {
std::vector<int> test(5);
std::transform(test.begin(), test.end(), test.begin(), [](int value) {
return half(value);
});
return 0;
}