二维数组动态分配
来源:互联网 发布:淘宝网购物商城 编辑:程序博客网 时间:2024/05/17 07:36
代码转自:http://blog.csdn.net/lifanxi/article/details/1649840
#include <iostream>#include <cstdlib>#include <new>template <typename T>T **darray_new(int row, int col){ int size = sizeof(T); void **arr = (void **) malloc(sizeof(void *) * row + size * row * col); if (arr != NULL) { unsigned char * head; head = (unsigned char *) arr + sizeof(void *) * row; for (int i = 0; i < row; ++i) { arr[i] = head + size * i * col; for (int j = 0; j < col; ++j) new (head + size * (i * col + j)) T; } } return (T**) arr;}template <typename T>void darray_free(T **arr, int row, int col){ for (int i = 0; i < row; ++i) for (int j = 0; j < col; ++j) arr[i][j].~T(); if (arr != NULL) free((void **)arr);}
代码转自:http://blog.csdn.net/MoreWindows/article/details/7664479
//C++语言中动态的申请二维数组 new delete #include <new> #include <cstdio> #include <cstdlib> #include <string> using namespace std; //动态申请二维数组 template <typename T> T** new_Array2D(int row, int col) { int size = sizeof(T); int point_size = sizeof(T*); //先申请内存,其中sizeof(T*) * row表示存放row个行指针 T **arr = (T **) malloc(point_size * row + size * row * col); if (arr != NULL) { T *head = (T*)((int)arr + point_size * row); for (int i = 0; i < row; ++i) { arr[i] = (T*)((int)head + i * col * size); for (int j = 0; j < col; ++j) new (&arr[i][j]) T; } } return (T**)arr; } //释放二维数组 template <typename T> void delete_Array2D(T **arr, int row, int col) { for (int i = 0; i < row; ++i) for (int j = 0; j < col; ++j) arr[i][j].~T(); if (arr != NULL) free((void**)arr); } int main() { printf(" C++语言中动态的申请二维数组 new delete\n"); printf(" -- by MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n"); printf("请输入行列(以空格分开): "); int nRow, nCol; scanf("%d %d", &nRow, &nCol); //动态申请连续的二维数组 string **p = new_Array2D<string>(nRow, nCol); //为二维数组赋值 int i, j; for (i = 0; i < nRow; i++) for (j = 0; j < nCol; j++) { char szTemp[30]; sprintf(szTemp, "(第%d行,第%d列)", i, j); p[i][j] = szTemp; } //输出二维数组 for (i = 0; i < nRow; i++) { for (j = 0; j < nCol; j++) printf("%s ", p[i][j].c_str()); putchar('\n'); } delete_Array2D<string>(p, nRow, nCol); return 0; }
0 0
- 动态分配二维数组
- 动态分配二维数组
- 如何动态分配二维数组
- 动态分配二维数组
- 动态分配二维数组
- 动态分配二维数组
- 二维数组动态分配
- 动态分配二维数组
- 动态分配二维数组
- 动态分配二维数组
- 动态分配二维数组
- 二维数组动态分配内存
- 二维数组的动态分配
- 二维数组动态分配
- 动态分配二维数组
- 动态分配二维数组
- C++动态分配二维数组
- 二维数组动态分配内存
- 事件绑定的应用
- 类的Load和initialize方法
- 【目标检测】目标检测原理与实现(一)
- 小白日记34:kali渗透测试之Web渗透-扫描工具-Burpsuite(二)
- Jquery—入门一
- 二维数组动态分配
- jsp+servlet+javaBean的后台分页
- 过滤器总结
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(三)
- 你不可不知的final(3)-初始化时机(失手率比较高的一道面试题)
- python集合的处理
- Ajax的使用和函数的编写
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
- 时间线程Timer