多维数组的构造函数初始化列表

时间:2015-04-22 06:30:34

标签: c++ c++11 visual-c++

我尝试将成员数组中的所有数据初始化为0

class Array {
    int m_anArray1D[10];
    int m_anArray2D[10][10];
public:
    Array(): m_anArray1D{0}, m_anArray2D{{0}} {}
};

但代码永远不会有效。

无论如何都要在2D阵列中同时分配所有数据

2 个答案:

答案 0 :(得分:0)

假设您的代码有打字错误并且您没有提供编译器版本,则以下代码对于支持C ++ 98的所有编译器都已足够。

struct Array {
    int m_anArray1D[10];
    int m_anArray2D[10][10];
};

int main(int argc, char *argv[]) {
    Array arr = {};
    return 0;
}

答案 1 :(得分: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() {}
};