HM197 货架四种开张
HM197 货架四种开张
来源: 第 197 集 vector容器-构造函数
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
动态数组和普通数组很像,但叫做**单端数组**:前端封闭,通常只在尾部 push_back 插入、pop_back 删除。front 是第一个元素,back 是最后一个元素。起始迭代器指向第一个元素,结束迭代器指向最后一个元素的**下一个**位置;反向的起点指向倒数第一个元素。它的迭代器是**随机访问**迭代器,可以一次跳多格。
和静态数组不同,它可以**动态扩展**。扩展时并不是在原空间后面接着开一块(无法保证后面空闲),而是另找一块更大的内存,把旧数据拷过去,再释放旧空间。具体多开多少由内部策略决定,不要去猜容量数字。
使用前必须包含对应头文件。构造有多种方式:
- 默认(无参)构造:先得到空货架,再尾插。
- 区间构造:传入一对迭代器,区间是**前闭后开**——取得到起始位置,取不到结束位置。
- \(k\) 个值构造:
vector<int> v(k, x)表示 \(k\) 个 \(x\),第一个参数是个数。 - 拷贝构造:用已有货架初始化新货架。
打印时用迭代器从起始走到结束,元素之间一个空格。另用随机访问取出指定下标,并用 front、back 核对两端。
输入格式
第一行一个整数 \(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
- 通过率
- ?
- 上传者