C++ 使用二维动态数组编写一个类
我有一个家庭作业。我不是在找人帮我做这项工作,我只是在一个方面遇到了麻烦,尽管我也会接受其他方面的建议 任务是: 使用二维动态数组编写一个类 构造函数传入数组的维度。构造函数还将动态数组中的所有值初始化为行索引乘以列索引C++ 使用二维动态数组编写一个类,c++,arrays,dynamic,class,C++,Arrays,Dynamic,Class,我有一个家庭作业。我不是在找人帮我做这项工作,我只是在一个方面遇到了麻烦,尽管我也会接受其他方面的建议 任务是: 使用二维动态数组编写一个类 构造函数传入数组的维度。构造函数还将动态数组中的所有值初始化为行索引乘以列索引 交换二维数组的两列,其中列索引作为参数传入。只需复制地址,而不复制列元素的值 删除二维数组的一列,其中列索引作为参数传入。不要只在列数组上使用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