码迷,mamicode.com
首页 > 其他好文 > 详细

STL中的Vector相关用法

时间:2015-12-19 00:00:51      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

STL中的Vector相关用法

  标准库vector类型使用需要的头文件:#include <vector>。

  vector 是一个类模板,不是一种数据类型,vector<int>是一种数据类型。

  Vector的存储空间是连续的,list不是连续存储的。

1. 定义和初始化

vector< typeName > v1;       //默认v1为空,故下面的赋值是错误的v1[0]=5;
//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被扩充为 v1.size()。
vector<typeName>v2(v1); 或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());
vector< typeName > v3(n,i);//v3包含n个值为i的typeName类型元素 vector< typeName > v4(n); //v4含有n个值为0的元素 int a[4]={0,1,2,3,3}; vector<int> v5(a,a+5);//v5的size为5,v5被初始化为a的5个值。后一个指针要指向将被拷贝的末元素的下一位置。 vector<int> v6(v5);//v6是v5的拷贝 vector< 类型 > 标识符(最大容量,初始所有值);

2. 值初始化

  (1)如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。
  (2)如果保存的式含有构造函数的类类型的元素,标准库使用该类型的构造函数初始化。
  (3)如果保存的式没有构造函数的类类型的元素,标准库产生一个带初始值的对象,使用这个对象进行值初始化。

3. vector对象最重要的几种操作

  (1)v.push_back(t)    在容器的最后添加一个值为t的数据,容器的size变大。

     其中,采用的是复制构造函数重新建立这样的一个对象。  另外list有push_front()函数,在前端插入,后面的元素下标依次增大。
  (2)v.size()        返回容器中数据的个数,size返回相应vector类定义的size_type的值。

     v.resize(2*v.size)或v.resize(2*v.size, 99) 将v的容量翻倍(并把新元素的值初始化为99)
  (3)v.empty()     判断vector是否为空
  (4)v[n]           返回v中位置为n的元素
  (5)v.insert(pointer,number, content)    向v中pointer指向的位置插入number个content的内容。
       还有v. insert(pointer, content),v.insert(pointer,a[2],a[4])将a[2]到a[4]三个元素插入。
  (6) v.pop_back()    删除容器的末元素,并不返回该元素。
  (7)v.erase(pointer1,pointer2) 删除pointer1到pointer2中间(包括pointer1所指)的元素。
        vector中删除一个元素后,此位置以后的元素都需要往前移动一个位置,虽然当前迭代器位置没有自动加1,
     但是由于后续元素的顺次前移,也就相当于迭代器的自动指向下一个位置一样。
  (8)v1==v2          判断v1与v2是否相等。
  (9)!=、<、<=、>、>=      保持这些操作符惯有含义。
  (10)vector<typeName>::iterator p=v1.begin( ); p初始值指向v1的第一个元素。*p取所指向元素的值。
      对于const vector<typeName>只能用vector<typeName>::const_iterator类型的指针访问。
  (11)p=v1.end( ); p指向v1的最后一个元素的下一位置。
  (12)v.clear()      删除容器中的所有元素。

 

STL中的Vector相关用法

标签:

原文地址:http://www.cnblogs.com/icmzn/p/5058389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!