HM184 尾插尾删柜
HM184 尾插尾删柜
来源: 第 184 集 模板-类模板案例-数组类封装(下)
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
在已经能安全构造、深拷贝、赋值、析构的 MyArray<T> 上,补齐对外接口:
- 尾插
pushBack(const T &value):若mCapacity == mSize(已满)直接返回,不扩容;否则把值写到下标mSize处,再让mSize加一。 - 尾删
popBack():这是**逻辑删除**——不真正擦堆区内容,只让用户访问不到最后一个元素。若mSize == 0直接返回;否则mSize减一。容量不变。 - 下标
operator[](int index):返回T &,这样arr[0] = 100才能当左值。返回真实堆区那个元素本身。 getCapacity()/getSize():把私有的容量和大小读出来。
内置类型和自定义类型都要能用。Person 须有默认构造(new T[容量] 需要),再提供有参构造。打印人物时用 姓名 和 年龄 两个公有成员。
先处理整数柜:按容量尾插若干整数(满员忽略),做 \(k\) 次尾删(空柜再删忽略),再做若干次下标赋值。然后处理人物柜:按容量尾插若干人,再做 \(k_2\) 次尾删。
输入格式
第一行两个整数 \(c, n\)(\(1 \le c \le 1000\),\(0 \le n \le 1000\))。
第二行 \(n\) 个整数,绝对值 \(\le 10^9\)。
第三行一个整数 \(k\)(\(0 \le k \le 2000\)),表示整数柜尾删次数。
第四行一个整数 \(u\)(\(0 \le u \le 1000\))。
接下来 \(u\) 行,每行两个整数 \(idx, val\):把整数柜 arr[idx] 赋成 \(val\)。保证 \(0 \le idx < \) 当前大小。
随后一行两个整数 \(p, m\)(\(1 \le p \le 1000\),\(0 \le m \le 1000\))。
接下来 \(m\) 行人物:不含空白的姓名和整数年龄。姓名长度 \(1\sim 20\),年龄为 \(1\sim 10^6\)。
最后一行一个整数 \(k_2\)(\(0 \le k_2 \le 2000\)),表示人物柜尾删次数。
输出格式
第一行:整数柜元素,空格分隔;大小为 \(0\) 则空行。
第二行:cap= 容量 size= 大小。
随后每人一行 姓名 年龄(按剩余顺序)。
最后一行:pcap= 容量 psize= 大小。
样例
输入 #1
5 5
0 1 2 3 4
1
1
0 100
10 5
Wukong 999
HanXin 20
Daji 30
ZhaoYun 25
Angela 27
0
输出 #1
100 1 2 3
cap=5 size=4
Wukong 999
HanXin 20
Daji 30
ZhaoYun 25
Angela 27
pcap=10 psize=5
输入 #2
2 4
1 2 3 4
3
0
2 1
Tom 1
1
输出 #2
cap=2 size=0
pcap=2 psize=0
说明
样例 1:尾插入 \(0\sim 4\) 后容量与大小都是 \(5\);尾删一次后容量仍为 \(5\)、大小为 \(4\),再把 \(0\) 号改成 \(100\)。人物柜容量 \(10\)、只插 \(5\) 人。样例 2:容量 \(2\) 只能留下 \(1,2\);尾删三次后为空(多删忽略);人物插入后再删光,只剩空柜。operator[] 必须返回引用,赋值才能写回堆区。
信息
- ID
- 1183
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者