将多个函数值返回到main()-C++
Return multiple function value to main() - C++
是否有方法将多个值返回到一个函数?在我正在开发的一个程序中,我希望从一个有2个参数的函数中向主函数返回2个矩阵,当函数在main中调用时,它将在2个矩阵中返回值,所有统计数据都需要继续执行程序。我没有找到真正做到这一点的方法。如有任何帮助,我们将不胜感激,谢谢。例如
int main() {
Matrix a,b=function(p,q);
...
}
std::tuple<Matrix, Matrix> function(int p, int q) {
// ...
return std::make_tuple(a, b);
}
int main() {
Matrix a, b;
std::tie(a, b) = function(p, q);
// ...
}
在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::对,但最好使用专用结构,以便您可以用有意义的名称命名对象:
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。
如果要返回多个值,可以将对输出存储的引用作为函数的参数传递。
void myFunction(int p,int q, cv::Mat& out1, cv::Mat& out2);
返回一个指向矩阵的智能指针的std::向量。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 代码在main()中运行,但在函数中出现错误
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 函数是否可以访问传递给main()的参数
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 我的 int main() 中出现堆栈溢出错误
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- 当我尝试在 Main 中调用插入函数时,它不是取数字?
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- 为什么类和 main() 函数中也有动态内存分配
- 在 main.cpp 的上下文中找不到目录(带有 CMake 的快板)
- 我想在 Main 中用 C++ 调用其他类中的一个类,但我做不到
- "main"函数堆栈中的对象在第一个任务运行时被覆盖 (FreeRTOS)
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- C++ assigment std::list:<typename>:itrator 在 main 中工作,但在方法中它不起作用
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 为什么要从main()返回NULL?
- main() 中的 std::cout 在调试期间不会在调试控制台中打印任何内容