【入门】二维vector
题目描述
给你 个 vector 数组,分别是 ,初始都为空数组,现在有如下 3 种操作
- 0 t x, 表示将 x 添加到 的末尾
- 1 t,表示按需输出 中的所有元素
- 2 t,表示将 清空
输入格式
第 1 行包含 2 个整数正 ,表示数组的个数和操作的个数
接下来 行,每行的第 1 个数是操作的类型
- 当 时,再输入 2 个数 ,表示将 添加到 的末尾
- 当 时,再输入 1 个数 ,请按序输出 中的所有元素
- 当 时,再输入 1 个数 ,表示清空数组
输出格式
- 每当 时,输出 1 行数,代表 中的所有元素,元素之间用 1 个空格分开;
- 若数组 是空,请输出 1 行空行
3 13
0 0 1
0 0 2
0 0 3
0 1 -1
0 2 4
0 2 5
1 0
1 1
1 2
2 1
1 0
1 1
1 2
1 2 3
-1
4 5
1 2 3
4 5
提示
- 样例解释
- 0 0 1,[c = 0, t = 0, x = 1], 代表把 x = 1 放到 a[t] 末尾,a[0] = [1]
- 0 0 2,执行后 a[0] = [1, 2]
- 0 0 3,执行后 a[0] = [1, 2, 3]
- 0 1 -1,执行后 a[1] = [-1]
- 0 2 4,执行后 a[2] = [4]
- 0 2 5,执行后 a[2] = [4, 5]
- 1 0,输出 a[0] 数组, 输出 1 2 3
- 1 1,输出 a[1] 数组, 输出 -1
- 1 2,输出 a[2] 数组, 输出 4 5
- 2 1,清空 a[1], a[1] = []
- 1 0,输出 a[0] 数组, 输出 1 2 3
- 1 1,输出 a[1] 数组, a[1] 为空,直接输出换行
- 1 2,输出 a[2] 数组, 输出 4 5
- 二维 vector 的语法如下
// 申明 n 个 1维 vector<int>
vector<vector<int>> a(n);
for (int i = 0; i < q; i++) {
cin >> t >> x;
a[t].push_back(x);
}
// 清空 vector
a[t].clear();
// 遍历 vector<int> 有 3 中方法
// 1、获取 size
for (int i = 0; i < a[t].size(); i++) cout << a[t][i] << ' ';
// 2、使用迭代器
for (int i = a[t].begin(); i != a[t].end(); i++) cout << *i << ' ';
// 3、最简单方法
for (int i : a[t]) cout << x << ' ';
// 可以用 auto 代替 int
for (auto i : a[t]) cout << x << ' ';
数据规模与限制
- 1s, 1024KiB for each test case.