我想要声明一个没有大小的2D数组:
int weightcalls = {{0,112}, {112,115}};
但程序说这是错误的,我必须把它的大小放在第一位。
答案 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;支持向量。虽然有些人已经为这些系统的载体提供了支持,但它仍然占用了大量的空间。