C++中使用模板,new创建2维动态数组

 1 // 使用模板和new创建2维动态数组
 2
 3 #include<iostream>
 4 #include<exception>
 5 #include<cstdlib>
 6 #include<iomanip>
 7 using namespace std;
 8
 9 template<class Type>
10 bool Make2DArray(Type **&x,int rows,int cols)
11 {
12     int i;
13     try
14     {
15         // 创建行指针
16         x=new Type *[rows];
17         // 为每一行分配空间
18         for(i=0;i<rows;i++)
19         {
20             x[i]=new Type [cols];
21         }
22         return true;
23     }
24     catch(bad_alloc)
25     {
26         return false;
27     }
28
29 }
30
31 int main()
32 {
33     int **x,rows,cols,i,j;
34     bool flag;
35     cout<<"输入创建动态数组的行数rows= ";
36     cin>>rows;
37     cout<<"输入创建动态数组的列数cols= ";
38     cin>>cols;
39     flag=Make2DArray(x,rows,cols);
40     if(flag==true)
41     {
42         for(i=0;i<rows;i++)
43         {
44             for(j=0;j<cols;j++)
45             {
46                 x[i][j]=j+i*cols;
47             }
48         }
49     }
50     cout<<"输出创建的数组:\n";
51     for(i=0;i<rows;i++)
52     {
53         for(j=0;j<cols;j++)
54         {
55             cout<<setw(3)<<x[i][j];
56         }
57         cout<<endl;
58     }
59     return 0;
60 }

调试运行结果:

时间: 2024-11-08 13:20:09

C++中使用模板,new创建2维动态数组的相关文章

c++创建二维动态数组与内存释放

如下: #include <iostream> #include <windows.h> using namespace std; int main() { cout << "create dynamic two-dimension array..." << endl; int sizeX = 5; int sizeY = 8; // 申请 double** array = new double*[sizeX]; for (int i =

一维动态数组和二维动态数组的创建和使用

#include<stdio.h> #include<malloc.h> void main(){ int *a,n=10,i; /* calloc()函数的原型是:(void *)calloc(unsigned n,unsigned size) calloc()函数用于向系统动态申请n个,每个占sizege字节的内存单元,函数返回值为所申请的内存空间首地址 malloc和calloc主要区别在于,当系统的内存只剩下一些非常小的碎片时,用calloc函数设计的动态数组的时间效率优于

二维动态数组

之前都是写的小程序,一直用的静态数组,也没出现问题. 可是,最近碰到大型程序和工程,这时就要用动态数组了. 因为静态数组时保存在栈中的,而动态数组保存在堆中. 计算机的栈只有1M大小,而堆可以理论上达到计算机内存大小, 可见当大型工程数据量非常大时,必须使用动态数组了. c++的动态数组的建立和删除要用到new和delete, new用来开辟内存空间,delete用来删除内存空间. 建立二维动态数组test,第一维大小为a,第二维大小为b. 下面时具体实现代码: 1 int **test=new

【转】CUDA与二维动态数组

1 /* 2 * Copyright 徐洪志(西北农林科技大学.信息工程学院). All rights reserved. 3 * Data: 2012-4-22 4 */ 5 // 6 // 此程序是演示了二维动态数组空间申请和与显存数据相互拷贝的两种方法 7 #include <stdio.h> 8 //#include <cutil_inline.h> 9 #include <iostream> 10 #include <cuda_runtime.h>

动态创建二维vector数组+指针与引用的区别

二维vectorvector<vector <int> > ivec(m ,vector<int>(n));    //m*n的二维vector 动态创建m*n的二维vector方法一:vector<vector <int> > ivec;ivec.resize(m);for(int i=0;i<m;i++) ivec[i].resize(n); 方法二:vector<vector <int> > ivec;ivec

C++中new和delete来创建和释放动态数组

在C++编程中,使用new创建数组然后用delete来释放. 一.创建并释放一维数组 #include<iostream> using namespace std; int main() { int n; cin>>n; //分配动态一维数组 int *arr=new int[n]; for(int i=0;i<n;i++) cin>>arr[i]; for(int i=0;i<n;i++) cout<<arr[i]<<"

new和delete创建和释放动态数组

1.动态创建和释放一维数组 #include<iostream> using namespace std; int main() { int n; cin>>n; //分配动态一维数组 int *arr=new int[n]; for(int i=0;i<n;i++) cin>>arr[i]; for(int i=0;i<n;i++) cout<<arr[i]<<" "; //释放arr数组 delete[] ar

二维数组指针及二维动态数组的分配问题

在我以前的文章中都有讲过关于数组指针及指针数组的相关问题,但是讲得不够深入,我后来后了别人写的博客后觉得人家的确实写得好, 也学到了不少东西,对以前的问题有深的领悟了,于是准备结合这些博客和文章再稍微深入一点讲讲这些问题.这些指针的问题是C语言中的基础与关键 而且一旦出现这些问题,不太好找bug的来源,有时候不得不借助反汇编. 参考文章: http://c.biancheng.net/cpp/html/476.html       C语言指针数组和数组指针 http://blog.csdn.ne

如何创建并使用动态数组?

基本思路是使用malloc()库函数来得到一个指向一大块内存的指针.然后想引用数组一样 引用这块内存,其机理就是一个数组下标访问可以改写为一个指针加上偏移量. int N; scanf("%d",&N); int *p; p=(int *)malloc(sizeof(int)*N);