介绍:
vector : 与数组类似,而不同之处是其大小是动态的,它不会造成内存的浪费和越界。随机访问和在末尾处的插入和删除操作比较快,虽然支持中间的插入和删除,但不怎么快,有机会专门写一篇其各项操作与数组之间速度比较。
用法:
1.头文件
#include<vector>
2.定义方式
vector<int>vec1; //定义一个int类型的vector vector<string>vec2; //定义一个string类的vector vector<node>vec3; //定义一个结构体类型的vector
3.迭代器
与数组进行 for 循环时用到的下标 i 类似,但比那个复杂,所要注意的也更多。
vector<int>::iterator it; //定义一个迭代器
4.基本操作
例子(输入输出):
#include<vector> #include<iostream> using namespace std; int main() { vector<int>vec; vector<int>::iterator it; int n,temp; cin>>n; for(int i=0;i<n;++i) { cin>>temp; vec.push_back(temp); } for(it=vec.begin();it!=vec.end();++it) { cout<<*it<<endl; } for(int i=0;i<n;++i) { cout<<vec[i]<<endl; } return 0; }
常用函数总结
- 末尾添加元素: vec.push_back(data);
- 末尾删除元素: vec.pop_back();
- 任意位置插入元素: vec.insert(it,data);
- 任意位置删除元素: vec.erase(it);
- 删除[it_begin,it_end)的元素:vec.erase(it_begin,it_end);
- 清空vector中的元素:vec.clear();
- 开始指针:vec.begin();
- 末尾指针:vec.end(); //指向最后一个元素的下一个位置
- 返回第一个元素:vec.front();
- 判断vector是否为空:vec.empty();//空1,非空0
- 返回容器中的个数:vec.size();
- 元素翻转
#include <algorithm> reverse(vec.begin(), vec.end());
- 元素排序
#include <algorithm> sort(vec.begin(), vec.end()); //采用的是从小到大的排序 //如果想从大到小排序,可以采用上面反转函数,也可以采用下面方法: bool Comp(const int& a, const int& b) { return a > b; } sort(vec.begin(), vec.end(), Comp);
参考资料:
https://www.cnblogs.com/zhonghuasong/p/5975979.html
http://www.cnblogs.com/aiguona/p/7228364.html