将多个函数值返回给main() - C ++

时间:2015-12-08 09:26:06

标签: c++

有没有办法将多个值返回给函数?在我正在进行的程序中,我希望将2个矩阵返回到主函数,从具有2个参数的函数返回,当函数调用main时,它将返回2个矩阵中的值,所有统计数据需要继续通过该程序。我发现没有办法真正做到这一点。非常感谢任何帮助,谢谢。 例如

int main() {
   Matrix a,b=function(p,q);
   ...
}

4 个答案:

答案 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返回到矩阵。

相关问题