HM182 通用柜规格

HM182 通用柜规格

HM182 通用柜规格

来源: 第 182 集 模板-类模板案例-数组类封装的需求分析

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

要实现一个通用数组类 MyArray<T>,需求如下:

  1. 既能存内置类型(如 int),也能存自定义类型(如 Person)。
  2. 真实数据放在**堆区**:内部用 T *pAddress 指向 new T[容量] 得到的数组。
  3. 有参构造传入容量。
  4. 自己写拷贝构造和 operator=,用深拷贝避免编译器默认浅拷贝(两个对象共享同一块堆内存,析构时会重复释放)。
  5. 提供尾插、尾删;提供 operator[] 按下标访问。
  6. 容量、元素个数做成私有成员,对外用 getCapacity()getSize() 读取。

内部私有成员就是这三样:pAddressmCapacitymSizemSize 表示当前元素个数,也叫大小。

请按上述规格实现 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
通过率
?
上传者