c++ - 数组指针数组的析构函数

标签 c++ arrays pointers destructor

好的,我有这个构造函数:

Board::Board(int nRows, int nCols){
    numRows=nRows;
    numCols=nCols;

    int** board=new int*[numRows];
    for(int i=0; i<numRows; i++){
        board[i]=new int[numCols];

        for(int j=0; j<numCols; j++){
            board[i] [j]=-1;
        }
    }
}

其中 board 是一个行数数组,其中数组中的每个项目都指向一个长度为列数的数组,所以这个 board 被设置并初始化为值 -1。我的问题是我应该如何为这样的情况实现我的析构函数,我理解创建每个指针数组的概念,但在破坏中我仍然有点迷茫。感谢您的帮助!

最佳答案

第一点:不要这样做。只是不要。使用 std::vector 存储数据,并使用用户运算符重载以允许客户端使用 2D 维度对其进行索引。

就是说,无论如何你可能会坚持这样做,所以你也可以这样做,至少知道基本的想法:把你原来的 new 倒过来说话。所以,您开始于:

int** board=new int*[numRows];
for(int i=0; i<numRows; i++){
    board[i]=new int[numCols];

相反,您首先要删除单个项目:

for (int i=0; i<numRows; i++)
    delete [] board[i];

然后删除外部指针:

delete [] board;

不过我要重复一遍:使用 std::vector for the storage 会更简洁.

关于c++ - 数组指针数组的析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322194/

相关文章:

arrays - 用方括号解释函数指针参数

c - 为什么我的 ANSI C 函数不保留它设置的参数值?

c++ - 在 C++ 中获取数据类型字节数的安全方法

c - 结构末尾大小为 0 的数组

c++ - 获取成员变量值设置然后传递给函数c++

c++ - 数组的重载运算符

ios - 按键值对字典数组进行排序

c - 使用结构体调试 C 程序

c++ - 用于 C 或 C++ 的类似于 SWT 的 GUI 工具包

c++ - 可以将变量重新声明为推断为相同类型的 auto 吗?