实现一个三维数组模版CArray3D,可以用来生成元素为任意类型变量的三维数组
来源:互联网 发布:知乎 法国亚马逊 编辑:程序博客网 时间:2024/06/03 15:39
描述
实现一个三维数组模版CArray3D,可以用来生成元素为任意类型变量的三维数组,使得下面程序输出结果是:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,
注意,只能写一个类模版,不能写多个。
#include <iostream>using namespace std;// 在此处补充你的代码int main(){ CArray3D<int> a(3,4,5); int No = 0; for( int i = 0; i < 3; ++ i ) for( int j = 0; j < 4; ++j ) for( int k = 0; k < 5; ++k ) a[i][j][k] = No ++; for( int i = 0; i < 3; ++ i ) for( int j = 0; j < 4; ++j ) for( int k = 0; k < 5; ++k ) cout << a[i][j][k] << ",";return 0;}
输入
无
输出
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,
样例输入
无
样例输出
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,
提示
提示:类里面可以定义类,类模版里面也可以定义类模版。例如:
class A{ class B { };};templateclass S{ T x; class K { T a; };};
用指针写了个。没写析构函数。不大明白的。没有用到提示
template<class T>class CArray3D{private:T *** _array;int _r,_c,_l;public:CArray3D(int r, int c, int l){_array = new T **[r];for(int i = 0;i<r; i++) { _array[i] = new T*[c]; } for(int i = 0;i<r; i++) { for(int j=0; j<c; j++){_array[i][j] = new T[l];} } _r = r; _c = c; _l = l;}int ** operator[] (int index) { return _array[index]; } };
————————————————————————————————————————————————————————————————————————————
模板类里定义模板类
template<class T>class CArray3D{public:template <class T1>class CArray2D{public:template <class T2>class CArray1D{public:CArray1D(){a = NULL;}void set(int l){a = new T[l];}~CArray1D(){if(a) delete []a;}T2 & operator [] (int index){return a[index];}private:T2 *a;};CArray2D(){a1 = NULL;}void set(int c, int l){a1 = new CArray1D<T1>[c];for(int i = 0;i<c;i++){a1[i].set(l);}}~CArray2D(){if(a1) delete []a1;}CArray1D<T1> & operator [] (int index){return a1[index];}private:CArray1D<T1> * a1;};CArray3D(){a2 = NULL;}CArray3D(int r, int c, int l){a2 = new CArray2D<T>[r];for(int i=0;i<r;i++){a2[i].set(c,l);}}~CArray3D(){ if(a2) delete []a2;}CArray2D<T> & operator [] (int index){return a2[index];}private:CArray2D<T> * a2;};
0 0
- 实现一个三维数组模版CArray3D,可以用来生成元素为任意类型变量的三维数组
- smarty三维数组的模版方法
- 关于三维数组变量重置为0的注意事项
- JUnit @Parameters为一个三维数组
- 创建一个三维数组
- 创建一个三维数组
- 三维数组元素的引用问题
- vector实现三维数组
- 三维数组和三维数组的指针
- 三维数组的理解
- 三维数组的应用
- 三维数组的运用
- 三维数组的初始化
- 简单的三维数组
- 随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中
- 随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中。
- 随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中。
- 三维数组
- AudioTrack到AudioFlinger再到AudioPolicyService
- 线程死锁浅谈
- WebSphere+db2使用PROPAGATION_REQUIRES_NEW事务策略因为的系
- Spark性能调优
- 堆和栈的区别
- 实现一个三维数组模版CArray3D,可以用来生成元素为任意类型变量的三维数组
- SerialControl.start not connected
- <java API源码初体验>1---collection集合之ArrayList原理分析
- Hibernate多对多双向关联,Annotation与映射文件方式。解决中间表无法插入数据。
- Pentaho Work with Big Data(四)—— 转换Hive里的数据
- iOS7以后导航栏按钮颜色问题
- 4. Median of Two Sorted Arrays
- AspectJ 切入点表达式语言--http://lavasoft.blog.51cto.com/62575/172292/
- 算法(读书笔记):1.关于算法的零散小点