Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在lambda表达式中使用外部函数_C++_Transform_Std - Fatal编程技术网

C++ 在lambda表达式中使用外部函数

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){返回

是否可以在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){返回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; 
}