c++标准模板库(STL)
c++的vector是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据,使用时需要添加头文件:
#include <vector>
using namespace std;
vector的基本函数如下:
vector() //创建一个空的vector vector(int size) //创建一个vector,元素个数为size vector(int nSize,const t& t) //创建一个vector,元素个数为nSize,且值均为t vector(const vector&) //复制构造函数 vector(begin,end) //复制[begin,end)区间内另一个数组的元素到vector中
增加函数:
vector<int> v; int i = 1; v.push_back(i);
v.insert(v.begin()+1, 2);
删除函数:
vector<int> v(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1 v.pop_back(); //删除向量中最后一个元素 v.clear(); //清空向量 v.erase(v.begin(), v.end());
判断函数:
vector<int> v; v.empty();
大小函数:
vector<int> v; v.size(); //返回向量中元素的个数 v.capacity; //总共可以容纳的元素个数
遍历函数:
vector<int> v; vector<int>::iterator it; for(it=v.begin();it!=v.end();it++){ cout<<*it<<endl; } for(int i=0;i<v.size();i++){ cout<<v.at(i)<<" "; } cout<<endl;
其他算法:
(1) 使用reverse将元素翻转:
#include<algorithm>
reverse(vector.begin(),vector.end());
将元素翻转,即逆序排列(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含)
(2)使用sort排序:
#include<algorithm>
sort(vec.begin(),vec.end());
(默认是按升序排列,即从小到大)。可以通过重写排序比较函数按照降序比较,如下定义排序比较函数:
bool Comp(const int &a,const int &b) { return a>b; }
void swap(vector&):交换两个同类型向量的数据 void assign(int n,const T& x):设置向量中第n个元素的值为x void assign(const_iterator first,const_iterator last):向量中[first,last)中元素设置成当前向量元素