如何将函数中的多个变量和数组返回到c ++中的main函数中? (如MATLAB)
float read_mesh(const char *filename){
//I have two 2D arrays and two variables here that I need them in MAIN function
return vertex,face,nVert,nFace;
}
void main()
{
//Load model data
[ , , , ] = read_mesh(name_M.c_str());
}
答案 0 :(得分:3)
您可以使用std :: tuple模板从函数和std :: tie返回多个值,以将元组的元素绑定到调用站点的各个变量:
#include <iostream>
#include <tuple>
std::tuple<int, int> foo()
{
return std::make_tuple(1, 2);
}
int main()
{
int one, two;
std::tie(one, two) = foo();
std::cout << "one: " << one << ", two: " << two << std::endl;
}
这种元组的元素可以是不同的类型,包括像std :: vector这样的容器。
答案 1 :(得分:1)
如果您想从函数返回数组,建议您使用std::array
或std::vector
。例如:
std::vector<std::vector<float>> read_mesh(const char *filename)
{
std::vector<std::vector<float>> myvec(HEIGHT, std::vector<float>(WIDTH));
myvec[y][x] = ...;
return myvec;
}
int main()
{
std::vector<std::vector<float>> myvec = read_mesh("");
}
请注意,[y]
在此示例中位于[x]
之前。如果您想要反过来,可以交换尺寸。