【C++】指向指针的指针int**的深复制的实现
来源:互联网 发布:青岛软件开发工资待遇 编辑:程序博客网 时间:2024/06/13 23:34
实现指向指针的指针的深复制
如编写一个构造函数初始化一个矩阵。矩阵元素用一个二维数组来表示。
//定义了一个表示矩阵的类class Matrix {public: Matrix(string name, int height, int width, int** element); ~Matrix();private: string name; int height; int width; int** param;};//构造函数的实现Matrix::Matrix (string name, int height, int width, int** element) { this->name = name; this->height = height; this->width = width; //实现指向指针的指针的深复制 param = new int*[height];//申请一块内存用来储存元素为指向int的指针的数组,这些指针分别指向每一行 for (int i = 0; i < height; ++i) { //为每一个存放指针的数组申请一块内存储存元素为int的数组,这个数组储存一行里的每一个元素,并将元素初始化为0 param[i] = new int[width](); for (int j = 0; j < width; ++j) { param[i][j] = element[i][j];//进行逐个元素赋值 } }}
因为在这里指向指针的指针,实际上指向一个二维数组,所以要单独为每一个维度申请一块内存,第二个维度要用循环逐个申请内存。
注意在申请最底层的维度时,在new语句最后加上括号(),将元素初始化,不然容易出现垃圾值,后续操作会出现问题。
删除操作
Matrix::~Matrix() { for (int i = 0; i < height; ++i) { delete []param[i];//先将存放int型元素的数组内存逐个释放掉 } delete []param;//最后将指向这些数组的指针的空间释放}
记:释放空间的顺序和申请空间的顺序相反
0 0
- 【C++】指向指针的指针int**的深复制的实现
- c 指向指针的指针
- C 指向指针的指针
- C指针---指向指针的指针(转)
- c语言指针,指向指针的指针
- C指针传递,指向指针的指针。
- 【C++】指针(5):指向指针的指针
- 指向指针的指针
- 指向指针的指针
- 指向指针的指针
- 指向指针的指针 **
- 指向指针的指针
- 指向指针的指针
- 指向指针的指针
- 指向指针的指针
- 指向指针的指针
- 指向指针的指针
- 指向指针的指针
- Git使用详细教程
- MyBatis:Invalid bound statement (not found)
- 整数中1出现的次数(从1到n整数中1出现的次数)
- 记录
- 博客更新申明-置顶
- 【C++】指向指针的指针int**的深复制的实现
- HDU 1237 简单计算器
- Lucene 4.X 倒排索引原理与实现: (1) 词典的设计
- HDU5289 Assignment RMQ / 单调队列
- Rust 1.7.0 之 #![deny(missing_docs)]
- 持续集成篇_01_持续集成介绍及组成
- QT 处理中文乱码的问题
- C/C++ 服务端性能评测和检测优化工具
- 【数据结构与算法】十二 字符串搜索