在c ++函数中返回几个数组和变量(如MATLAB)

时间:2015-03-24 14:08:58

标签: c++ arrays function

如何将函数中的多个变量和数组返回到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());
}

2 个答案:

答案 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::arraystd::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]之前。如果您想要反过来,可以交换尺寸。