将矢量大小指定为数组长度

时间:2017-11-18 08:50:07

标签: c++ arrays variable-assignment

所以我目前正在开发一个用c ++编写的程序,我想做出以下的解释:

methodOne()
{
    vector<int> one;
    vector<int> two;
... assigning to one and two...
    int a = one.size();
    int b = two.size();
    methodTwo(a, b);
}

methodTwo(int a, int b)
{
    int array[a][b];
}

当我尝试这个时,我得到一个错误:a和b必须是常数
我试图将a和b分配给const int a,const int b。但是,这没有任何帮助。我想知道是否有人知道如何解决这类错误。
提前感谢你能给予的任何帮助!

2 个答案:

答案 0 :(得分:0)

在程序运行之前必须知道数组的大小。它的大小是其完整类型的一部分,就像元素类型本身一样。

您需要具有动态尺寸的东西。使用大小为* * b的std::vector<int>

methodTwo(int a, int b)
{
    std::vector<int> array(a * b);
}

您也可以使用std::vector<std::vector<int>>,但为什么要麻烦?毕竟,您可以通过相应地计算偏移量来访问一维向量元素,就像它是二维数据结构一样:

methodTwo(int a, int b)
{
    std::vector<int> array(a * b);
    // ...
    int x = 5;
    int y = 6;
    auto const element = array[y * a + x];
}

答案 1 :(得分:0)

我看到你已经使用了vector,所以你可以用

替换你的数组

typedef std::vector< std::vector<int> > matrix; matrix name(a, std::vector<int>(b));