我如何声明一个二维数组,并用C++声明它的大小?
我想声明一个二维数组,像这样没有大小:我如何声明一个二维数组,并用C++声明它的大小?
int weightcalls = {{0,112}, {112,115}};
但节目中说,这是错误的,我必须把的大小在第一位。
尝试使用矢量代替。
例如
#include <vector>
using namespace std;
int main(){
vector< vector <int> > v;
}
然后,您可以调整矢量设置尺寸 前
v.resize(2); //This will make a 2D vector
,然后您可以稍后调整它的大小(或只是使用“的push_back”)推回元素。
在第一个例子中的前
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
正如帕诺斯说你可以声明数组作为载体。这将使您可以稍后重新调整大小并添加到阵列中。不过,如果你只是想声明数组并把它作为这样,那么我相信你可以使用:
int weightcalls[][] = {{0, 112}, {112, 115}};
,或者你可以声明为指针:
int ** weightcalls = {{0, 112}, {112, 115}};
,但如果你用它作为一个指针,那么你可能希望保持内部大小为两个,以减少以后的混淆。另外,你需要确保你完全了解指针和C++中的内存布局,以确保你不会导致内存问题(这里缺乏特殊性,因为所有内存问题一般都不好)。
你不想使用矢量的一个原因是大小和可移植性。小型系统和微控制器上的许多C++版本(即Arduino)都没有对矢量的“直接”支持。尽管有些人为这些系统提供支持,但它仍占用大量空间。
如果在C++中未指定数组的大小,则无法声明数组,如果您需要动态数组,则必须执行类似int myarray[2];
的操作,如果在编译时不知道数组的大小,则你必须使用这样int* myarray;
指针或从STL一些容器中,例如性病::矢量,至极被广泛使用并很容易使用:
#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
一个指针。 希望我帮助你。
当你说“程序说错了”时,你是什么意思?我相信你的意思是发生了一个错误。请说出那是什么错误。并且一定要格式化您的代码。 –