C++程序设计 第7周 文件操作与模板 编程题1#
2018-01-13 21:01
246 查看
这题看上去很简单,结果还是费了些功夫,问题还是出在基础不牢:
1. 类的前后顺序很重要,成员函数如果含有其他类的对象,一定要放到其他类的后面。
2. 数组类的对象是需要一个一个初始化的。
3. int *p=new int[10]和 int *p[10]有本质区别:第一个p是整型数组的地址,p[i]是变量;第二个p是指针数组的地址,p[i]是指针
---------------------------------------以下是题目-----------------------------------------------
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,
注意,只能写一个类模版,不能写多个。
![](https://img-blog.csdn.net/20180114084626814?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVhdXR5ZGFra2k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20180114084827296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVhdXR5ZGFra2k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1. 类的前后顺序很重要,成员函数如果含有其他类的对象,一定要放到其他类的后面。
2. 数组类的对象是需要一个一个初始化的。
3. int *p=new int[10]和 int *p[10]有本质区别:第一个p是整型数组的地址,p[i]是变量;第二个p是指针数组的地址,p[i]是指针
---------------------------------------以下是题目-----------------------------------------------
描述
实现一个三维数组模版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; template <class T> class CArray3D { class A//二维数组 { class B//一维数组 { T *ppp; public: B() { ppp = NULL; } ~B() { if (ppp) delete []ppp; } void creat(int k) { ppp = new T[k]; } T& operator[](int k) { return ppp[k]; } }; B *pp; public: A() { pp = NULL; } ~A() { if (pp) delete[]pp; } void creat(int j, int k) { pp = new B[j]; for (int l = 0; l < j; l++) pp[l].creat(k); } B & operator[](int j) { return pp[j]; } }; A *p; public: CArray3D(int i, int j, int k) { p = new A[i]; for (int l = 0; l < i; l++) p[l].creat(j, k); } ~CArray3D() { if (p) delete[]p; } A & operator[](int i) { return p[i]; } }; 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; }
相关文章推荐
- 文件操作与模板编程题 #1(C++程序设计第7周)
- POJ C++程序设计 编程题#3 编程作业—文件操作与模板
- 文件操作与模板 编程题#2: 实数的输出格式(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- C++程序设计 - Week 7 文件操作和模板
- POJ C++程序设计 编程题#1 编程作业—文件操作与模板
- * 文件操作与模板 编程题#1(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- ** 文件操作与模板 编程题#4: 字符串操作(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- POJ C++程序设计 编程题#2 编程作业—文件操作与模板
- 文件操作与模板 编程题#3: 整数的输出格式(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- C++程序设计 第8周 编程题1# list
- C++程序设计-第7周 静态成员、友元、类模板
- C++程序设计 第7周 字符串操作
- C++模板:文件操作
- 字符串操作(C++程序设计第7周)
- PKU C++程序设计实习 学习笔记5 文件操作和模板
- C++程序设计 期末考试 编程题1# 输出200
- C++基础知识(四)文件的基本操作
- C++之文件IO操作流
- C++的File类文件操作
- C++程序设计必知:多文件结构和编译预处理命令