本文主要介绍了向量在C语言中的用法,并详细描述了向量的各种常见用法和注意事项。有需要的朋友可以参考一下。
本文演示了vector在C中的使用,与大家分享,供大家参考。如下所示:
一、概述
Vector是C标准模板库的一部分。它是一个多功能的模板类和函数库,可以操作多种数据结构和算法。Vector是一个可以存储各种类型对象的容器。简单来说,vector是一个动态数组,可以存储任意类型,大小可以动态改变。
例如:
//c语言风格
int my house[100];
//使用矢量
向量向量库(100);
如上定义,vecMyHouse可以存储100个int数据。
1.它可以像普通数组一样被访问
例如:
vecMyHouse[50]=1024;
2.您可以按顺序用数据填充容器。
例如:
int I=0;
for(;i 25我)
{
vecmyhouse . push _ back(1);
}
3.它还可以动态地改变它的大小,这是通过下面的语句实现的
将容器的大小改为400,这样容器可以容纳400个int数据。
例如:
vecmyhouse . resize(400);
4.您还可以在容器中加载自定义数据类型。
例如:
//自定义一个类
Cmyclass类
{
};
//定义一个容器来存储该类
vectorCmyclass vecMyHouse
5.您可以在定义容器时为其分配一个初始值。
//定义一个包含100个int数据的容器,初始值为0。
向量vecMyHouse(100,0);
6.您可以将一个容器中的对象分配给另一个容器。
例如:
//定义一个包含100个int数据的容器,初始值为0。
向量vecMyHouse(100,0);
//定义一个与上述容器内容相同的新容器
向量myVec
myVec=vecMyHouse
二、 以上是vector容器的简单介绍,下面将详细介绍它的其他功能:
1.为了使用vector,您必须在头文件中包含以下代码:
#包含矢量
2.vector属于std命名域,需要用命名来限定,可以加在文件的开头。
使用STD:vector;
或者
使用命名空间std
或者直接使用vector作为代码的前缀。
例如:
STD:vector int my house;
3.vector提供以下功能或操作:
下面列出了一些常用的函数。
//定义一个向量
STD:vector int c;
可用功能:
C.clear()删除容器中的所有数据。
C.empty()判断容器是否为空。
C.erase(pos)删除pos位置数据。
C.erase(beg,end)删除[beg,end]区间内的数据。
C.front()返回第一个数据。
C.insert(pos,elem)在pos位置插入一个elem副本。
C.pop_back()删除最后的数据。
C.push _ back (ELM)在末尾添加一个数据。
C.resize(num)重置容器的大小。
C.size()返回容器中实际数据的数量。
C.begin()返回一个指向容器第一个元素的迭代器
C.end()返回一个指向容器最后一个元素的迭代器。
三、下面描述一下什么是迭代器
迭代器相当于指针,比如:
//对于变量,使用指针指向相应的变量
//以后可以用*加指针来操作这个变量。
int a=10
int * p;
p=a;
用指针操作变量。
例:* p=11//运算后A变成11
对于容器,使用迭代器来操作容器中相应位置的值。
当迭代器指向容器中的某个位置时,可以使用* add迭代器来操作该位置。
//定义一个向量
STD:vector my vec;
//添加10个元素
for(int j=0;j10j)
{
my vec . push _ back(j);
}
//定义迭代器
STD:vector int:iterator p;
//指向容器的第一个元素
p=my vec . begin();
//移动到下一个元素
p;
//修改此元素的赋值
* p=20//然后将myVec容器中的第二个值修改为20
//循环遍历迭代器,更改所有值
p=my vec . begin();
for(;p!=my vec . end();p)
{
* p=50
}
以上简单介绍了vector的用法,仅供入门使用。在这里,我们将继续以举例的形式进行说明。
1.1.vector的数据输入和输出:
# includestdio.h
# includevector
#包括iostream
使用命名空间std
void main()
{
int I=0;
矢量v;
for(I=0;i 10我)
{
五、push_back(一);//将元素逐个存储到向量中。
}
//清除存储的数据。
for(I=0;I . v . size();i )//v.size()表示矢量存入元素的个数
{
cout v[I]”;//把每个元素显示出来
}
续完
}
注:你也可以用贝京和v.end()来得到矢量开始的和结束的元素地址的指针位置。
你也可以这样做:
向量int:迭代器ITER;
for(ITER=v . begin();iter!=v . end();iter)
{
cout * iter endl
}
2.对于二维矢量的定义。
1)定义一个10个矢量元素,并对每个矢量符值1-10。
# includestdio.h
# includevector
#包括输入输出流
使用命名空间标准
void main()
{
int i=0,j=0;
//定义一个二维的动态数组,有10行,每一行是一个用一个矢量存储这一行的数据。
//所以每一行的长度是可以变化的。之所以用到向量(0)是对矢量初始化,否则不能对矢量存入元素。
vector向量数组(10,vector int(0));
for(j=0;j 10j)
{
for(I=0;I 9;我)
{
数组[ j ]的缩写.推回(一);
}
}
for(j=0;j 10j)
{
for(I=0;我数组[ j ]的缩写.size();我)
{
标准输出数组[j][I]”;
}
cout结束
}
}
2)定义一个行列都是变化的数组。
# includestdio.h
# includevector
#包括输入输出流
使用命名空间标准
void main()
{
int i=0,j=0;
向量向量阵列;
矢量(同Internationalorganizations)国际组织线;
for(j=0;j 10j)
{
数组。push _ back(线);//要对每一个矢量初始化,否则不能存入元素。
for(I=0;I 9;我)
{
数组[ j ]的缩写.推回(一);
}
}
for(j=0;j 10j)
{
for(I=0;我数组[ j ]的缩写.size();我)
{
标准输出数组[j][I]”;
}
cout结束
}
}
使用矢量擦除指定元素,示例如下:
#包括" iostream "
#包含"矢量"
使用命名空间标准
int main()
{
向量arrive)
由…改编push _ back(6);
由…改编push _ back(8);
由…改编push _ back(3);
由…改编push _ back(8);
for(vector int:iterator it=arr。begin();它!=arr。end();)
{
如果(* it==8)
{
it=arr。抹掉(它);
}
其他
{
它;
}
}
cout '在删除8之后:\ n ';
for(vector int:iterator it=arr。begin();它arr。end();它)
{
cout * it
}
cout结束
}
希望本文所述实例对大家掌握C中矢量用法起到一定的帮助作用。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。