如何初始化所有元素为 0 的指针的二维动态内存数组
How do I initialize a 2-D dynamic memory array of pointers with all elements 0
我想将二维数组的值初始化为 0。但这似乎不起作用。我可以在构造函数中将我的 ** 数组的值初始化为 0 吗?如果是,如何。我的代码是。
#include <iostream>
using namespace std;
int main(){
int row, col;
cin>>row;
cin>>col;
int **array=new int*[row];
for (int i=0; i<row; i++){
array[i]=new int[col];
}
for (int i=0; i<row;i++){
for (int j=0; j<col; j++){
array[i][j]={'0'};
cout<<array[i][j]<<" ";
}
cout<<endl;
}
}
有人可以进一步解释,如果我必须用其他元素替换数组中的第 i 个 elem,我将如何处理内存分配。
你可能想要array[i][j]=0;
。你为什么使用char
类型'0'
?但是,有一种更简单的方法:array[i]=new int[col]();
,只需将()
添加到值初始化每列。
还有一个更好的方法:
std::vector<std::vector<int>> array(row, std::vector<int>(col));
对于您的第一条评论,您需要创建一个具有新大小的新数组,复制所有数据,然后删除旧的二维数组。
对于您的第二条评论,这里有一个例子:
struct A
{
int **array;
A(int row, int col) : array(new int*[row])
{
for (int i=0; i < row; i++)
{
array[i]=new int[col]();
}
}
};
PS:您可以使用std::vector
节省大量工作。
此代码适用于 gcc
#include <iostream>
using namespace std;
int main(){
int row, col;
cin>>row;
cin>>col;
int **array=new int*[row];
for (int i=0; i<row; i++){
array[i]=new int[col];
}
for (int i=0; i<row;i++){
for (int j=0; j<col; j++){
array[i][j]=0;
cout<<array[i][j]<<" ";
}
cout<<endl;
}
}
要将数组的第 i 个元素替换为其他元素,我们可以执行以下操作:
int *aa = new int[p];
swap(array[i], aa)
但是要使其在逻辑上正确,您需要确保数组 [i] 指向的 p>= 大小。在我们的大多数用例中,我们使它们相同。
你可以尝试这样的事情:-
class A
{
public:
A():my2DArray() {0}
private:
B* my2DArray[max1][max2];
};
相关文章:
- 二维动态数组逻辑
- 在C++中通过引用传递字符串的二维动态数组
- 创建二维动态数组的函数
- 如何初始化所有元素为 0 的指针的二维动态内存数组
- cpp二维动态数组
- 在C++中的类内部创建的二维动态分配数组
- 基类和派生类的二维动态数组
- 初始化所有条目为 0 的二维动态数组
- 一个二维动态阵列的C++剖分与比较
- 如何将项目添加到二维动态矢量
- 二进制 I/O 到具有二维动态数组的文件
- 二维动态容器 qt
- 如何在 C++ 中的类中声明二维动态数组
- 转置二维动态矩阵
- 是二维动态对象 O(n^2) 碰撞的最快算法
- 如何理解这个二维动态数组的实现?这是最基本的实现
- 如何在c++中设置具有特定值的二维动态数组
- 增加了二维动态数组
- 长双二维动态数组c++
- 从二维动态数组中获取长度