vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector可以存放任意类型的数据:int,long,char,结构体等多种数据类型。
1.在使用vcetor前,需要包含头文件:
#include <vector>
2. vector属于std命名空间,因此需要通过命名空间来限定:
std::vector<int> ivec;
也可以定义全局的命名空间:
using namespace std;
vector<int> ivec
3. 定义和初始化vector有四种方式:
vector<T> v1; 保存类型为T的对象。默认构造函数,变量v1为空
vector<T> v2(v1); v2是v1的副本
vector<T> v3(n, i); v3包含n个值为i的元素
vector<T> v4(n); v4含有值初始化的元素的n个副本。
4. 向vector添加一个数据: vector添加数据的缺省方法是push_back()。push_back()函数表示将数据添加到vector的尾部,并按需要来分配内存。例如:向vector<int>中依次添加0,1,2,...... ,9共10个数据,注意:数据都是从尾部依次插入。需要如下编写代码:
for(vector<int>::size_type i= 0;i<ivec.size(); i++)
ivec.push_back(i) ;
5. 使用下表操作访问vector元素:
for(vector<int>::size_type i= 0;i<ivec.size(); i++)
{
ivecData = ivec[i] ;
cout<<"ivec = "<<ivec[i] <<endl;
}
下标操作可以输出vector的value值.
6.删除元素操作:
ivec.erase(ivec.begin());// 删除第一个元素
ivec.erase(ivec.begin()+2);//删除第3个元素
ivec.erase(ivec.begin()+i,ivec.end()+j);//删除区间[i,j-1];区间从0开始
ivec.pop_back(); //删除最后一行数据
7. vector排序操作:
sort(vec.begin(),vec.end());//默认是按升序排列,即从小到大.
bool Comp(const int &a,const int &b)
{
return a>b;
}
sort(vec.begin(),vec.end(),Comp) //降序排序
8.vector 清空:
ivec.clear(); //清空内容,但是的内存空间还在
vector<int>(ivec).swap(ivec); //清空vector并最小化它的内存空间
9.vector作为函数的形参进行传递:
直接传递vector类型的参数:
#include <iostream>
#include <vector>
using namespace std;
void cv(vector<int> a)
{
vector<int>::iterator itp=a.begin();
while (itp!=a.end() )
cout<<*itp++<<endl;
}
int main(void)
{
vector<int> b;
b.push_back(6);
b.push_back(5);
b.push_back(7);
cv(b);
return 0;
}
传递迭代器:
#include <iostream>
#include <vector>
using namespace std;
void cv(vector<int>::iterator begin,vector<int>::iterator end)
{
while (begin!=end )
cout<<*begin++<<endl;
}
int main(void)
{
vector<int> b;
b.push_back(6);
b.push_back(5);
b.push_back(7);
cv(b.begin(),b.end() );
return 0;
}