多维数组的构造函数初始化列表
Constructor Initialization Lists for Multidimensional array
我尝试将成员数组中的所有数据初始化为0
class Array {
int m_anArray1D[10];
int m_anArray2D[10][10];
public:
Array(): m_anArray1D{0}, m_anArray2D{{0}} {}
};
但代码永远不会起作用。
是否可以立即分配二维数组中的所有数据?
假设您的代码有印刷错误,并且您没有提供您的编译器版本,以下代码对于所有支持 C++98 的编译器都足够了。
struct Array {
int m_anArray1D[10];
int m_anArray2D[10][10];
};
int main(int argc, char *argv[]) {
Array arr = {};
return 0;
}
好的!你可以在构造函数中使用 fill
std::fill(m_anArray2d[0]+0,m_anArray2d[9]+10,0);
或使用memset
memset(m_anArray2D, 0, sizeof(int)*10*10);
或
class Array {
int m_anArray1D[10];
int m_anArray2D[10][10];
public:
Array(): m_anArray1D(), m_anArray2D() {}
};
我尝试将成员数组中的所有数据初始化为0
class Array {
int m_anArray1D[10];
int m_anArray2D[10][10];
public:
Array(): m_anArray1D{0}, m_anArray2D{{0}} {}
};
但代码永远不会起作用。
是否可以立即分配二维数组中的所有数据?
假设您的代码有印刷错误,并且您没有提供您的编译器版本,以下代码对于所有支持 C++98 的编译器都足够了。
struct Array {
int m_anArray1D[10];
int m_anArray2D[10][10];
};
int main(int argc, char *argv[]) {
Array arr = {};
return 0;
}
好的!你可以在构造函数中使用 fill
std::fill(m_anArray2d[0]+0,m_anArray2d[9]+10,0);
或使用memset
memset(m_anArray2D, 0, sizeof(int)*10*10);
或
class Array {
int m_anArray1D[10];
int m_anArray2D[10][10];
public:
Array(): m_anArray1D(), m_anArray2D() {}
};