c++算法——vector
vector
vector 是标准模板库的一个容器,直接翻译为“向量”,一般来成“可变长数组”,也即“长度会根据需要而变化的数组”。在竞赛中有些题目需要很大的很大的数组,而有些还用不上就需要用到 vector 。
使用 vector 首先要加#include <vector>,当然万能头也包含他,同时,必须要有 “using namespace std;”。
vector 定义
定义一个 vector 方法如下:
vector<int> a;//int类型的vector
vector<double> a;//double的
vector<char> a;//字符的
vector<node> a;//node是个结构体,结构体类型的
vector数组定义
vector<int> a[100];//定义一个一维长度固定为100(行固定),另一个维度不固定(列不固定)
vector<vector<int> > a;//定义一个两个维度都可以变的二维数组
vector访问
1,下标访问
他可以使用数组的访问方法a[i]
2,迭代器访问
vector<int>::iterator it; //定义迭代器
可以通过*it来访问 。
vector常用函数 作用
- push_back(元素) 添加一个元素到 vector 后边,时间复杂度O(1)
- pop_back() 弹出(删除) vector 的最后一个元素,复杂度O(1)
- insert(位置,元素) 插入元素x到 vector 的指定位置it(迭代器)处,复杂度O(n)
- erase(位置) 删除 vector 指定位置的元素
- clear() 清除 vector 所有元素,size变为0,复杂度O(n)
- front() 取 vector 的第一个元素
- back() 取 vector 的最后一个元素
- begin() vector 的的第一个元素的位置,返回第一个元素的迭代器
- end() 返回最后一个元素的后面位置(不是最后一个元素的迭代器)
- size() 元素个数,vector 的大小,即 vector 中已有的元素的个数
- resize(大小) 重新设置 vector 的大小
- empty 判断 vector 是否为空
例题
中间数
题目描述
依次读入若干正整数,如果是奇数个就输出最中间的那个数;否则,输出中间两个数的和。
以 0 作为结束标志,但 0 不计数。
输入格式
一行若干个正整数,为 0 为结束标志。
输出格式
一个数。
样例输入
1 2 3 0
样例输出
2
样例输入
1 2 3 4 0
样例输出
5