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

Assigning vector sizes as array lengths

本文关键字:数组 小指      更新时间:2023-10-16

所以我目前正在开发一个 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。然而,这无济于事。我想知道是否有人知道如何解决这种错误。
提前感谢您提供的任何帮助!

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

您需要具有动态大小的东西。使用大小为 a * 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];
}

我看到你已经在使用矢量,所以你可以用

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