【问题标题】:Returning matrix(as vector) from function [closed]从函数返回矩阵(作为向量)[关闭]
【发布时间】:2013-12-03 03:22:55
【问题描述】:

我正在使用 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;

}

【问题讨论】:

标签: c++ arrays vector


【解决方案1】:

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

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

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

typedef vector<vector<int> > matrix_type;

matrix_type makearray(int size1, int size2)

【讨论】:

    【解决方案2】:

    您无需为此创建函数。在 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;
    

    【讨论】:

    • 它是std::array,C++ 区分大小写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多