有没有办法将多个值返回给函数?在我正在进行的程序中,我希望将2个矩阵返回到主函数,从具有2个参数的函数返回,当函数调用main时,它将返回2个矩阵中的值,所有统计数据需要继续通过该程序。我发现没有办法真正做到这一点。非常感谢任何帮助,谢谢。 例如
int main() {
Matrix a,b=function(p,q);
...
}
答案 0 :(得分:1)
function myFunction(val){
alert(val)
}
答案 1 :(得分:1)
与C ++一样,你有几个可能性。以下是一些:
如果要返回固定数量的对象,请在示例中添加具有适当数量对象的结构:
struct FunctionResult { Matrix a, b; };
FunctionResult result = function(p, q);
doSomething(result.a, result.b);
如果要返回的对象数是可变的,则返回一个标准容器,例如std :: vector,std :: deque等:
std::vector<Matrix> result = function(p, q);
如果含义合适并且您总是需要返回2个对象,则可以返回std :: pair,但最好使用专用结构,以便您可以使用有意义的名称命名对象:
std::pair<Matrix> result= function(p, q);
doSomething(result.first, result.second);
以类似的方式,您可以返回一个std :: tuple,以便您可以执行:
Matrix a, b;
std::tie(a, b) = function(p, q);
这可能与我的建议和python最相似,但由于名称,我最好使用专用结构。在所有其他情况下,返回的对象之间的对应关系不能强制执行,并且属于同一类型,我可以想象它们可以很容易地互换。
如果您想使用std::tuple方法,但有一个不支持它的编译器,请查看boost::tuple。
答案 2 :(得分:0)
如果要返回多个值,可以将对输出存储的引用作为参数传递给函数。
void myFunction(int p,int q, cv::Mat& out1, cv::Mat& out2);
答案 3 :(得分:-1)
将一个智能指针的std :: vector返回到矩阵。