从函数返回矩阵(作为向量)

时间:2013-12-03 03:22:56

标签: c++ arrays vector

我正在使用c ++。

我在函数多维向量中创建了一个新数组。值“size1”和“size2”来自另一个函数。 问题是: 如何重命名“void”让我从我的函数返回数组?

 void makearray(int size1, int size2) // Yup, it shouldn't be 'void' but... what?
{
    vector<int> x(size1);
    vector<vector<int> > array(size2, x);
//working on array
            return array;

}

2 个答案:

答案 0 :(得分:1)

只需为要返回的类型命名:

vector<vector<int> > makearray(int size1, int size2)

或者使用typedef使其更具可读性:

typedef vector<vector<int> > matrix_type;

matrix_type makearray(int size1, int size2)

答案 1 :(得分:0)

您无需为此创建功能。在C ++ 11中,std::array类型存在,根据ref。 使用此类型将获得Size1和Size2维度的多维数组:

array<array<int, Size1>, Size2> multiDimensionalArrayInstace;

更酷,使用C ++ 11和Type aliasing,你可以做到

template <class InnerType, size_t Size1, size_t Size2>
using Matrix = array<array<InnerType, Size1>, Size2>;

允许您实例化

Matrix<int,4,2> b;

等同于

array<array<int, 4>, 2> b;