C++ 使用二维动态数组编写一个类

C++ 使用二维动态数组编写一个类,c++,arrays,dynamic,class,C++,Arrays,Dynamic,Class,我有一个家庭作业。我不是在找人帮我做这项工作,我只是在一个方面遇到了麻烦,尽管我也会接受其他方面的建议 任务是: 使用二维动态数组编写一个类 构造函数传入数组的维度。构造函数还将动态数组中的所有值初始化为行索引乘以列索引 交换二维数组的两列,其中列索引作为参数传入。只需复制地址,而不复制列元素的值 删除二维数组的一列,其中列索引作为参数传入。不要只在列数组上使用delete操作符并将水平数组元素设置为NULL。将水平阵列的大小缩小1 为类创建一个打印函数,以打印出二维数组的值,并确保函数正常工作

我有一个家庭作业。我不是在找人帮我做这项工作,我只是在一个方面遇到了麻烦,尽管我也会接受其他方面的建议

任务是:

使用二维动态数组编写一个类

构造函数传入数组的维度。构造函数还将动态数组中的所有值初始化为行索引乘以列索引

  • 交换二维数组的两列,其中列索引作为参数传入。只需复制地址,而不复制列元素的值
  • 删除二维数组的一列,其中列索引作为参数传入。不要只在列数组上使用delete操作符并将水平数组元素设置为NULL。将水平阵列的大小缩小1
  • 为类创建一个打印函数,以打印出二维数组的值,并确保函数正常工作。在知道它们工作正常后,删除打印功能
    我需要帮助理解如何在私有部分声明2D数组。而且,正如上面提到的,如果有人能给我一些关于如何做的提示,那将是值得赞赏的。

    < P>我做C++开发已经有一段时间了,但是如果我记得正确的话,你会做如下的事情:

    int rows = 5;
    int cols = 10;
    
    int** array = new int*[rows];
    for (int i = 0; i < rows; i++) {
         array[i] = new int[cols];
    }
    
    int行=5;
    int cols=10;
    整数**数组=新整数*[行];
    对于(int i=0;i
    我可能弄错了;我在网上看到相反的帖子,你必须用一个一维数组伪造二维数组并更改订阅:


    这应该会给你一个想法。我没有尝试编译此代码:

    class Array {
       int **arr;
    };
    
    Array::Array(int rows, int cols) {
        arr = new int * [rows];  // this will allocate 'rows' many 'int *'s
        if (arr) {               // to ensure memory was allocated
            for (int i = 0; i < rows; i++) {
                arr[i] = new int [cols];  // this will allocate 'cols' many 'int's
                assert(arr[i]);           // to ensure memory was allocated
            }
        }
    }
    
    类数组{
    int**arr;
    };
    数组::数组(int行,int列){
    arr=new int*[rows];//这将分配'rows'多个'int*'
    if(arr){//以确保已分配内存
    对于(int i=0;i
    arr
    是指向int指针数组的指针
    arr[i]
    是指向整数数组的指针,即每个
    arr[i]
    表示二维数组中的一行。这应该让你开始

    <>如果你真的想学习C++,你自己试试,学习如何使用调试器。如果您还不习惯使用调试器,请使用printfs找出问题所在。

    class TwoDimensionalArray{
    
    class TwoDimensionalArray {
      private:
        int **array;
    
      public:
        TwoDimensionalArray(const int, const int);
    };
    
    TwoDimensionalArray::TwoDimensionalArray(const int rows, const int columns) {
        array = new int *[rows];
        for (int i = 0; i < rows; i++)
            array[i] = new int[columns];
    }
    
    int main() {
        TwoDimensionalArray *arr1 = new TwoDimensionalArray(5, 10);
        return 0;
    }
    
    私人: 整数**数组; 公众: 二维阵列(常数int,常数int); }; TwoDimensionalArray::TwoDimensionalArray(常量int行,常量int列){ 数组=新整数*[行]; 对于(int i=0;i
    谢谢,我想您的答案定义了实现部分的一部分,所以最后我应该有这样的内容:类TwoDimensionalArray{private:int**array;public:TwoDimensionalArray(const int,const int);};TwoDimensionalArray::TwoDimensionalArray(const int rows,const int columns){array=new int*[rows];for(int i=0;i