如何声明一个2D数组,而不是在C ++中声明它的大小?

时间:2016-03-06 20:44:42

标签: c++ arrays 2d

我想要声明一个没有大小的2D数组:

int weightcalls = {{0,112}, {112,115}};

但程序说这是错误的,我必须把它的大小放在第一位。

3 个答案:

答案 0 :(得分:1)

如果您不需要在C ++中指定其大小,则无法声明数组,如果您需要动态数组,则必须执行此类int myarray[2];之类的操作,如果您不了解数组& #39;在编译时的大小,然后你必须使用像这个int* myarray;的指针或STL的一些容器,例如std :: vector,它被广泛使用并且非常容易使用:

#include <vector>

int main(int argc, char* argv[]) {

std::vector<int> myvector;
myvector.resize(2); //Set the size of the vector to be 2
myvector.push_back(1);
myvector.push_back(2);

return 0;
}

使用C ++,最好在指针上使用std::vector。 希望我能帮到你。

答案 1 :(得分:0)

尝试使用矢量。

例如

#include <vector>
using namespace std;

int main(){
    vector< vector <int> > v;
}

然后,您可以调整矢量大小以设置尺寸 e.x

v.resize(2); //This will make a 2D vector

然后你可以稍后调整它(或者只是使用“push_back”)来推回元素。

e.x

v[0].resize(2);
//This will make the first "row" of the vector to have 2 empty places
v[0].push_back(6);
v[0].push_back(10);
//This will push back the number 6 as the first element of the first law.

在第一个例子中,矢量应该看起来像这样

0 0
0

0是显示可以填充元素的空位 而在第二个像这样

6 10
0

如果我的解释不那么详细,我很抱歉。我是新来的。 希望它有所帮助。我强烈建议使用矢量,因为它们更灵活。

哦,你可能还想查看这篇文章(可能有帮助) C++ 2D vector and operations

答案 2 :(得分:0)

正如Panos所说,可以将数组声明为向量。这样您就可以在以后调整大小并添加到数组中。但是,如果你只是想声明数组并使用它,那么我相信你可以使用:

int weightcalls[][] = {{0, 112}, {112, 115}};

或者您可以将其声明为指针:

int ** weightcalls = {{0, 112}, {112, 115}};

但是如果你将它用作指针,那么你可能希望将内部大小保持为两个以减少后来的混淆。此外,您需要确保完全了解c ++中的指针和内存位置,以确保您不会导致内存问题(此处缺乏特异性,因为所有内存问题通常都是坏)。

您不想使用向量的一个原因是大小和可移植性。在较小的系统和微控制器(即Arduino)上的许多c ++版本没有&#34; direct&#34;支持向量。虽然有些人已经为这些系统的载体提供了支持,但它仍然占用了大量的空间。