HM182 通用柜规格
HM182 通用柜规格
来源: 第 182 集 模板-类模板案例-数组类封装的需求分析
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
要实现一个通用数组类 MyArray<T>,需求如下:
- 既能存内置类型(如
int),也能存自定义类型(如Person)。 - 真实数据放在**堆区**:内部用
T *pAddress指向new T[容量]得到的数组。 - 有参构造传入容量。
- 自己写拷贝构造和
operator=,用深拷贝避免编译器默认浅拷贝(两个对象共享同一块堆内存,析构时会重复释放)。 - 提供尾插、尾删;提供
operator[]按下标访问。 - 容量、元素个数做成私有成员,对外用
getCapacity()、getSize()读取。
内部私有成员就是这三样:pAddress、mCapacity、mSize。mSize 表示当前元素个数,也叫大小。
请按上述规格实现 MyArray<T> 和 Person(公有姓名、年龄,须有默认构造,因为 new T[容量] 会默认构造每个元素)。
先读入整数柜的容量 \(c\) 和 \(n\) 个整数,尾插入柜;再拷贝出另一只整数柜。然后读入人物柜容量 \(p\) 和 \(m\) 个人,尾插入柜。满员后的尾插直接忽略。
输入格式
第一行两个整数 \(c, n\)(\(1 \le c \le 1000\),\(0 \le n \le 1000\))。
第二行 \(n\) 个整数,绝对值 \(\le 10^9\)。
第三行两个整数 \(p, m\)(\(1 \le p \le 1000\),\(0 \le m \le 1000\))。
接下来 \(m\) 行,每行一个不含空白的姓名和一个整数年龄。姓名长度 \(1\sim 20\),年龄为 \(1\sim 10^6\)。
输出格式
第一行:int cap= 容量 size= 大小。
第二行:整数柜元素,空格分隔,行末无多余空格;若大小为 \(0\) 则输出空行。
第三行:copy cap= 拷贝柜容量 size= 拷贝柜大小。
第四行:拷贝柜元素,格式同上。
第五行:person cap= 容量 size= 大小。
随后 \(m'\) 行(\(m'\) 为实际插入人数),每行 姓名 年龄。
样例
输入 #1
5 5
0 1 2 3 4
3 2
Tom 10
Jerry 8
输出 #1
int cap=5 size=5
0 1 2 3 4
copy cap=5 size=5
0 1 2 3 4
person cap=3 size=2
Tom 10
Jerry 8
输入 #2
2 4
7 8 9 10
1 0
输出 #2
int cap=2 size=2
7 8
copy cap=2 size=2
7 8
person cap=1 size=0
说明
容量为 \(2\) 时只能尾插两个整数,后面的被忽略。拷贝柜必须是深拷贝,与原柜各有一份堆内存。人物类型必须能默认构造,否则 new Person[p] 无法编译。
信息
- ID
- 1181
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者