vector容器用法详解.docx
《vector容器用法详解.docx》由会员分享,可在线阅读,更多相关《vector容器用法详解.docx(17页珍藏版)》请在冰豆网上搜索。
vector容器用法详解
vector容器用法详解
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。
像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。
vector类常用的函数如下所示:
∙vector():
创建一个空vector
∙vector(intnSize):
创建一个vector,元素个数为nSize
∙vector(intnSize,constt&t):
创建一个vector,元素个数为nSize,且值均为t
∙vector(constvector&):
复制构造函数
∙vector(begin,end):
复制[begin,end)区间内另一个数组的元素到vector中
∙voidpush_back(constT&x):
向量尾部增加一个元素X
∙iteratorinsert(iteratorit,constT&x):
向量中迭代器指向元素前增加一个元素x
∙iteratorinsert(iteratorit,intn,constT&x):
向量中迭代器指向元素前增加n个一样的元素x
∙iteratorinsert(iteratorit,const_iteratorfirst,const_iteratorlast):
向量中迭代器指向元素前插入另一个一样类型向量的[first,last)间的数据
∙iteratorerase(iteratorit):
删除向量中迭代器指向元素
∙iteratorerase(iteratorfirst,iteratorlast):
删除向量中[first,last)中元素
∙voidpop_back():
删除向量中最后一个元素
∙voidclear():
清空向量中所有元素
∙referenceat(intpos):
返回pos位置元素的引用
∙referencefront():
返回首元素的引用
∙referenceback():
返回尾元素的引用
∙iteratorbegin():
返回向量头指针,指向第一个元素
∙iteratorend():
返回向量尾指针,指向向量最后一个元素的下一个位置
∙reverse_iteratorrbegin():
反向迭代器,指向最后一个元素
∙reverse_iteratorrend():
反向迭代器,指向第一个元素之前的位置
∙boolempty()const:
判断向量是否为空,假如为空,如此向量中无元素
∙intsize()const:
返回向量中元素的个数
∙intcapacity()const:
返回当前向量X红所能容纳的最大元素值
∙intmax_size()const:
返回最大可允许的vector元素数量值
∙voidswap(vector&):
交换两个同类型向量的数据
∙voidassign(intn,constT&x):
设置向量中第n个元素的值为x
∙voidassign(const_iteratorfirst,const_iteratorlast):
向量中[first,last)中元素设置成当前向量元素
示例:
#include"stdafx.h"
#include
#include
usingnamespacestd;
classA
{
//空类
};
int_tmain(intargc,_TCHAR*argv[])
{
//int型vector
vectorvecInt;
//float型vector
vectorvecFloat;
//自定义类型,保存类A的vector
vectorvecA;
//自定义类型,保存指向类A的指针的vector
vectorvecPointA;
return0;
}
//vectorsample.cpp:
定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include
#include
usingnamespacestd;
classA
{
//空类
};
int_tmain(intargc,_TCHAR*argv[])
{
//int型vector,包含3个元素
vectorvecIntA(3);
//int型vector,包含3个元素且每个元素都是9
vectorvecIntB(3,9);
//复制vecIntB到vecIntC
vectorvecIntC(vecIntB);
intiArray[]={2,4,6};
//创建vecIntD
vectorvecIntD(iArray,iArray+3);
//打印vectorA,此处也可以用下面注释内的代码来输出vector中的数据
/*for(inti=0;i{
cout<}*/
cout<<"vecIntA:
"<for(vector:
:
iteratorit=vecIntA.begin();it!
=vecIntA.end();it++)
{
cout<<*it<<"";
}
cout<//打印vecIntB
cout<<"VecIntB:
"<for(vector:
:
iteratorit=vecIntB.begin();it!
=vecIntB.end();it++)
{
cout<<*it<<"";
}
cout<//打印vecIntC
cout<<"VecIntB:
"<for(vector:
:
iteratorit=vecIntC.begin();it!
=vecIntC.end();it++)
{
cout<<*it<<"";
}
cout<//打印vecIntD
cout<<"vecIntD:
"<for(vector:
:
iteratorit=vecIntD.begin();it!
=vecIntD.end();it++)
{
cout<<*it<<"";
}
cout<return0;
}
程序的运行结果如下:
上面的代码用了4种方法建立vector并对其初始化
2.增加与获得元素示例:
//vectorsample.cpp:
定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include
#include
usingnamespacestd;
int_tmain(intargc,_TCHAR*argv[])
{
//int型vector,包含3个元素
vectorvecIntA;
//插入123
vecIntA.push_back
(1);
vecIntA.push_back
(2);
vecIntA.push_back(3);
intnSize=vecIntA.size();
cout<<"vecIntA:
"<//打印vectorA,方法一:
for(inti=0;i{
cout<}
cout<//打印vectorA,方法二:
for(inti=0;i{
cout<}
cout<//打印vectorA,方法三:
for(vector:
:
iteratorit=vecIntA.begin();it!
=vecIntA.end();it++)
{
cout<<*it<<"";
}
cout<return0;
}
上述代码对一个整形向量类进展操作,先定义一个整形元素向量类,然后插入3个值,并用3种不同的方法输出,程序运行结果如下:
//vectorsample.cpp:
定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include
#include
usingnamespacestd;
classA
{
public:
intn;
public:
A(intn)
{
this->n=n;
}
};
int_tmain(intargc,_TCHAR*argv[])
{
//int型vector,包含3个元素
vectorvecClassA;
Aa1
(1);
Aa2
(2);
Aa3(3);
//插入123
vecClassA.push_back(a1);
vecClassA.push_back(a2);
vecClassA.push_back(a3);
intnSize=vecClassA.size();
cout<<"vecClassA:
"<//打印vecClassA,方法一:
for(inti=0;i{
cout<}
cout<//打印vecClassA,方法二:
for(inti=0;i{
cout<}
cout<//打印vecClassA,方法三:
for(vector:
:
iteratorit=vecClassA.begin();it!
=vecClassA.end();it++)
{
cout<<(*it).n<<"";
}
cout<return0;
}
上述代码通过定义元素为类的向量,通过插入3个初始化的类,并通过3种方法输出,运行结果如下:
//vectorsample.cpp:
定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include
#include
usingnamespacestd;
classA
{
public:
intn;
public:
A(intn)
{
this->n=n;
}
};
int_tmain(intargc,_TCHAR*argv[])
{
//int型vector,包含3个元素
vectorvecClassA;
A*a1=newA
(1);
A*a2=newA
(2);
A*a3=newA(3);
//插入123
vecClassA.push_back(a1);
vecClassA.push_back(a2);
vecClassA.push_back(a3);
intnSize=vecClassA.size();
cout<<"vecClassA:
"<//打印vecClassA,方法一:
for(inti=0;i