HM197 货架四种开张

HM197 货架四种开张

HM197 货架四种开张

来源: 第 197 集 vector容器-构造函数

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

动态数组和普通数组很像,但叫做**单端数组**:前端封闭,通常只在尾部 push_back 插入、pop_back 删除。front 是第一个元素,back 是最后一个元素。起始迭代器指向第一个元素,结束迭代器指向最后一个元素的**下一个**位置;反向的起点指向倒数第一个元素。它的迭代器是**随机访问**迭代器,可以一次跳多格。

和静态数组不同,它可以**动态扩展**。扩展时并不是在原空间后面接着开一块(无法保证后面空闲),而是另找一块更大的内存,把旧数据拷过去,再释放旧空间。具体多开多少由内部策略决定,不要去猜容量数字。

使用前必须包含对应头文件。构造有多种方式:

  1. 默认(无参)构造:先得到空货架,再尾插。
  2. 区间构造:传入一对迭代器,区间是**前闭后开**——取得到起始位置,取不到结束位置。
  3. \(k\) 个值构造vector<int> v(k, x) 表示 \(k\) 个 \(x\),第一个参数是个数。
  4. 拷贝构造:用已有货架初始化新货架。

打印时用迭代器从起始走到结束,元素之间一个空格。另用随机访问取出指定下标,并用 frontback 核对两端。

输入格式

第一行一个整数 \(n\)。

第二行 \(n\) 个整数 \(a_i\),将依次尾插入默认构造的货架 \(v_1\)。

第三行两个整数 \(L\)、\(R\),表示用 \(v_1\) 的半开区间 \([\texttt{begin}+L,\ \texttt{begin}+R)\) 构造 \(v_2\)。

第四行两个整数 \(k\)、\(x\),表示用 \(k\) 个 \(x\) 构造 \(v_3\)。

第五行一个整数 \(j\),表示对 \(v_1\) 做一次随机访问的下标。

输出格式

第一行:\(v_1\) 的全部元素。

第二行:\(v_1\) 的 front()back(),空格分隔。

第三行:整段区间构造(\([\texttt{begin},\ \texttt{end})\))得到的货架。

第四行:半开区间 \([L,R)\) 构造得到的 \(v_2\)。

第五行:\(v_3\)(\(k\) 个 \(x\))。

第六行:由 \(v_3\) 拷贝构造得到的货架。

第七行:\(v_1\) 下标 \(j\) 处的元素(用起始迭代器加上 \(j\) 再解引用)。

某行对应空货架时只输出换行。

样例

输入 #1

10
0 1 2 3 4 5 6 7 8 9
0 10
10 100
2

输出 #1

0 1 2 3 4 5 6 7 8 9
0 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
100 100 100 100 100 100 100 100 100 100
100 100 100 100 100 100 100 100 100 100
2

输入 #2

5
1 2 3 4 5
1 4
3 7
0

输出 #2

1 2 3 4 5
1 5
1 2 3 4 5
2 3 4
7 7 7
7 7 7
1

说明

\(1 \le n \le 1000\),\(|a_i|,|x| \le 10^9\),\(0 \le L \le R \le n\),\(0 \le k \le 1000\),\(0 \le j < n\)。

  • 区间构造取不到结束迭代器指向的位置。样例 #2 的 \([1,4)\) 只含下标 \(1,2,3\)。
  • vector<int> v(10, 100) 是 \(10\) 个 \(100\),不是 \(100\) 个 \(10\)。

信息

ID
1196
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者