C++ 初始化多维数组c++;

C++ 初始化多维数组c++;,c++,windows,multidimensional-array,C++,Windows,Multidimensional Array,我在VC++2008中工作,正在尝试分配多维字符数组来完成一些文件工作。我知道,每当分配一个数组时,数组的所有成员通常都应该按连续顺序初始化。我现在拥有的是这个 char ** thing = new char *[lineY]; for (int ii = 0; ii < lineY; ii++){ thing[ii] = new char[lineX]; } ... // working with array // deleting each part of the array

我在VC++2008中工作,正在尝试分配多维字符数组来完成一些文件工作。我知道,每当分配一个数组时,数组的所有成员通常都应该按连续顺序初始化。我现在拥有的是这个

char ** thing = new char *[lineY];
for (int ii = 0; ii < lineY; ii++){
    thing[ii] = new char[lineX];
}
... // working with array
// deleting each part of the array.
for (int ii = 0; ii < lineY; ii++){
    delete [] thing[ii];
}
delete [] thing;
char**thing=new char*[lineY];
对于(int ii=0;ii
我遇到的问题是,如果我将数组添加到监视列表中,或者在分配数组后立即放置一个中断符,调试器会声明数组等于51或32之类的数字,而不是包含索引和值的空间块,但是当我尝试通过分配来初始化每个索引的值时:

char ** thing = new char *[lineY];
for (int ii = 0; ii < lineY; ii++){
    thing[ii] = new char[lineX];
        for (int jj = 0; jj < lineX; jj++){
        thing[ii][jj] = '';
    }
}
char**thing=new char*[lineY];
对于(int ii=0;ii
编辑:编译器抛出“C2137空字符常量”我做错什么了吗?
编辑:阅读错误号上的msdn,找到答案

你不能写
东西[ii][jj]='
,因为
'
是一个不允许的空字符常量。尝试将
'
替换为
'
(在
'
s之间有空格)

是lineX和lineY编译时常量吗?在这种情况下:

std::array<std::array<char, lineX>, lineY> thing;
std::数组事物;
否则:

std::vector<std::vector<char> > thing(lineY, std::vector<char>(lineX));
std::vector thing(lineY,std::vector(lineX));

还有一个小问题,你到底为什么要手动分配n维数组?@ScarletAmaranth当你不需要为一个实例生成一个对象时,只要记住动态OOP的关键原则,手动动态分配内存是非常好的:销毁新的,管理现有的,只在需要时分配。此外,它与实例化分配n维数组的对象相同。我只是避免了一大堆访问器,你可以只分配一个数组,按行/列的主要顺序存储所有元素,并设置指针,使其行为类似于2D数组。