向量(vector)

vector

vector是一个标准库中的容器,使用时需要包含#include <vector>头文件。

 

vector是一个类模板而不是一种数据类型,对它的定义,需要指定类型。

vector(向量)是 C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,

当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.

 

1、vector对象的定义和初始化

vector类定义了好几种构造函数,并且与string类型相类似,如下所示:

操作调用方式

操作说明

Vector<T> v1;

Vector保存类型为T的对象。默认构造函数v1为空

Vector<T> v2(v1);

V2是v1的一个副本

Vector<T> v3(n , i);

V3包含n个值为i的元素

Vector<T> v4(n);

V4含有值初始化的元素的n个副本

 

注:对C++的容器来说,动态添加元素的效率,要比直接静态初始化元素的效率高。

2、vector对象的操作

vector标准库提供了许多类似于string对象的操作,如下所示是一部分:

操作调用方式

操作说明

v.empty()

判断v是否为空

v.size()

返回v中元素的个数

v.push_back(t)

向v的末尾添加一个元素

V[n]

返回v中位置为n的元素

V1 = v2

把v1中元素替换为v2中元素副本

V1==v2

判断是否相等

!=, <, <=, >, >=

直接用于vector对象的相互比较

成员函数:

  • push_back   在数组的最后添加一个数据
  • pop_back    去掉数组的最后一个数据 
  • begin           得到数组头的指针
  • end             得到数组的最后一个单元+1的指针
  • front        得到数组头的引用
  • back            得到数组的最后一个单元的引用
  • size           当前使用数据的大小
  • erase         删除指针指向的数据项
  • clear          清空当前的vector
  • empty        判断vector是否为空

3、顺序访问vector

1)、向向量a中添加元素

vector<int> a;
for(int i=0;i<10;i++)
a.push_back(i);


2)、也可以从数组中选择元素向向量中添加

int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);


3)、也可以从现有向量中选择元素向向量中添加
 

int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();it++)
b.push_back(*it);

4)、从向量中读取元素
(1)、通过下标方式读取

int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(vector<int>::iterator it=b.begin();it!=b.end();it++)
cout<<*it<<" ";


(2)、通过遍历器方式读取

int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(vector<int>::iterator it=b.begin();it!=b.end();it++)
cout<<*it<<" ";

4、几种重要的算法,使用时需要包含头文件:
 

#include<algorithm>
(1)sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
(2)reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
(3)copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素
(4)find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值