标准库vector类型是c中常用的一种模板,vector类型相当于动态容器。 在vector中主要有几个基本操作。 接着,分别从以下几点进行总结。
定义和初始化向量对象
vector对象的基本操作。 主要包括元素的添加、遍历等
1、定义和初始化向量对象
向量主要有四种定义和初始化方法。
1.1、定义空向量
定义的方法。
向量;
1
1.2、定义向量副本
定义的方法。
VectorV1(V;
1
1.3、定义并初始化
定义的方法。
VectorV2(n,I );
1
定义了长度为n的vector v2,各要素为I。
1.4、定义并指定初始长度
定义的方法。
V3 (n;
1
的初始化方法是默认初始化。
1.5、例
关于上述4种定义方法,请参照下图。
# include # includeusingnamespacestd;
int main () )。
//第一种定义方法
向量;
for(intI=0; i 10; I ) {
v.push_back(I;
}
//第二种定义方法
VectorV1(V;
//第三种定义方法
vector v2 (10,1;
//第四种定义方法
VectorV3(10;
打印机(first : );
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
printf (第二阶段: );
for (vector :3360 size _ typeix1=0; ix1!=v1.size (; (ix1 ) )。
printf(%d(t ),v1[ix1];
}
printf((n );
printf(third: );
for (vector :3360 size _ typeix2=0; ix2!=v2.size (; (ix2 ) )。
printf(%d(t )、V2 ) IX2 );
}
printf((n );
打印机(forth : );
for (vector :3360 size _ typeix3=0; ix3!=v3.size (; (ix3 ) )。
printf(%d(t ),v3[ix3];
}
printf((n );
返回0;
}
注:上述代码在c中使用了向量。
2、载体中的基本操作
矢量的基本操作包括插入、删除和遍历。
2.1、插入操作
向向量中插入元素的方法有:在末尾添加元素、使用push_back (函数)、在指定位置插入元素和使用insert (插入)函数。
其中,insert ()函数的具体形式如下:
插入(p,t ) )。
1
指定在迭代器p之前插入值为t的元素。 具体应用如下例。
# include # includeusingnamespacestd;
int main () )。
向量;
for(intI=0; i 10; I ) {
v.push_back(I;
}
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
//插入开始时10
v.insert(v.Begin ),10 );
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
//10和0之间添加11
vector:iterator it;
for(it=v.Begin ); it!=v.end (; it ) {
if(*it==0) {
v.insert(it,11 );
布雷克;
}
}
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
返回0;
}
2.2、删除操作
使用erase ()方法删除指定的元素。
是erase(p )
1
删除迭代器p指向的元素。
# include # includeusingnamespacestd;
int main () )。
向量;
for(intI=0; i 10; I ) {
v.push_back(I;
}
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
//首先插入10、10、10
v.insert(v.Begin ),3,10 );
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
//删除第二个10
int i=0;
vector:iterator it;
for(it=v.Begin ); it!=v.end (; it ) {
I;
if(I==2) {
v.erase(it );
布雷克;
}
}
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
返回0;
}
另外,还有清空vector中所有元素的clear (,pop_back )方法和删除末尾元素的clear )方法。
# include # includeusingnamespacestd;
int main () )。
向量;
for(intI=0; i 10; I ) {
v.push_back(I;
}
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
//删除结尾元素
v.pop_back (;
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
返回0;
}
2.3、横移
遍历通常有两种方法。
根据下标
利用迭代器
如下所示。
# include # includeusingnamespacestd;
int main () )。
向量;
for(intI=0; i 10; I ) {
v.push_back(I;
}
//利用下标
for (vector :3360 size _ typeix=0; ix!=v.size (; ix ) {
printf(%d(t ),v[ix];
}
printf((n );
//利用迭代器
vector:iterator it;
for(it=v.Begin ); it!=v.end (; it ) {
printf('%d(t )、*it );
}
printf((n );
返回0;
}
2.4、其他
上述操作还包括以下操作:
size ()返回向量的大小