vector
- vector 简介
- vector使用
- 定义
- 基本操作
- 高级操作
- 练习
- 倒序输出
- 篮球比赛
- 题目描述
- 输入格式
- 输出格式
- 输入样例
- 输出样例
- 数据范围
- AC代码
- 球迷
- 题目描述
- 输入格式
- 输出格式
- 输入样例
- 输出样例
- 数据范围
- AC代码
vector 简介
vector属于STL库, 需要#include <vector>
才能使用.
vector其实相当于一个动态一维数组.
vector使用
定义
四种不同情况:
vector<int> v; // 声明一个存int类型变量的vector容器, 初值默认为空
vector<int> v2(20); // 声明一个大小20的vector容器
vector<int> v3(20, 1); // 声明一个大小20的vector容器, 所有元素初值为1
vector<int> v4[10]; // 相当于二维数组, v4中每个元素都是vector
基本操作
注: vector和普通数组一样, 下标从0开始
v.push_back(x) // 将x插入到容器末尾
v.pop_back() // 删除末尾元素
v.clear() // 清空容器
v[x] = n // 将下标x的元素赋值为n
v[x] // 访问下标x的元素
v.size() // 元素个数
高级操作
vector本质上其实是变量(而非数组), 所以可以直接使用swap()
函数交换两个vector类型变量.
练习
倒序输出
输入一串数据, 除了末尾0以外都是正整数, 请倒序输出这串数据, 要求使用vector.
#include <iostream>
#include <vector>vector<int> v;int main()
{while(true){int x;cin >> x;if(x == 0) break;a.push_back(x);}int len = a.size();for(int i = len - 1; i >= 0; i--){cout << a[i] << " ";}return 0;
}
篮球比赛
题目描述
青蛙班里的 n 名同学分成两组进行篮球比赛。分组时,老师为了避免同学们熟人抱团,规定:同学们先随机排好队,按顺序交替加入队伍一、队伍二。但当 1 号青蛙正要加入前,两个队伍要交换所有队员。那么,最终队伍一、二的名单是?
输入格式
输入共 2 行:
第 1 行,1 个正整数 n
,为班级人数;
第 2 行,n 个正整数a[1], a[2], ..., a[n]
,为皮皮班里同学的学号,保证为 1~n 各一个,其中青蛙为 1 号。
输出格式
输出共 2 行:
第 1 行,若干个正整数,为队伍一的队员,按加入顺序输出;
第 2 行,若干个正整数,为队伍二的队员,按加入顺序输出。
输入样例
6
3 4 1 6 5 2
输出样例
4 1 5
3 6 2
数据范围
1 ≤ n ≤ 500,000
; 1 ≤ a[1], a[2], ..., a[n] ≤ n
,且为 1~n 各一个。
AC代码
#include <iostream>
#include <vector>
using namespace std;vector<int> v1, v2;int main(){int n;cin >> n;for(int i = 0; i < n; i++){int x;cin >> x;if(x == 1) swap(v1, v2);if(i % 2 == 1) v1.push_back(x);else v2.push_back(x);}for(int i = 0; i < v2.size(); i++) cout << v2[i] << ' ';cout << endl;for(int i = 0; i < v1.size(); i++) cout << v1[i] << ' ';return 0;
}
球迷
题目描述
10 支篮球队伍加入了最终的篮球大赛!篮球队伍编号为 0~9。每个篮球队伍都有自己的球迷团,每位球迷都有自己的编号,约定球迷编号的最后一位数代表它支持的队伍,例如 1342 号末尾为 2,因此他是 2 号队伍的球迷团成员。
请根据 n 个球迷的编号,确定每支队伍的球迷团名单。
输入格式
输入共 2 行:
第 1 行,一个整数 n,为球迷总人数;
第 2 行,n 个整数a[1], a[2], ..., a[n]
, 依次为球迷编号.
输出格式
输出共 10 行:
每行依次为0,1,…,9
号队伍的球迷编号,每支队伍的球迷按输入顺序排列;
如队伍无球迷,仍要输出一个空行。
输入样例
10
22 34 32 55 21 56 7 98 52 92
输出样例
21
22 32 52 9234
55
56
7
98
数据范围
1 ≤ n
≤ 100,000; 1 ≤ a[1], a[2], ..., a[n]
≤ 100,000,000.
AC代码
#include <iostream>
#include <vector>
using namespace std;vector<int> v[15];int main(){int n;cin >> n;for(int i = 0; i < n; i++){int x;cin >> x;v[x % 10].push_back(x);}for(int i = 0; i <= 9; i++){int len = v[i].size();for(int j = 0; j < len; j++) cout << v[i][j] << ' ';cout << endl;}return 0;
}