vector 对象操作

原创 2013年12月06日 09:23:41

vector的操作


      empty()                                          如果 v 为空,则返回 true, 否则返回 false 。
      v . size ()                                      返回 v 中元素的个数。
      v . push _ back ( t )       在 v 的末尾增加一个值为 t 的元素。
      v [ n ]                                                返回 v 中位置为 n 的元素。
      v1 = v2                                           把 v1 的元素替换为 v2 中元素的副本。
      v1 == v2                                       如果 v1 与 v2 相等,则返回 true 。

      !=, <, <=, >, >=                     保持这些操作符惯有的含义。


1.vector对象的size


       empty和size操作类似于string类型的相关操作。成员函数size返回相应vector类定义的size_type的值。


       提示:使用size_type类型时,必须指出该类型是在哪里定义的。vector类型总是包括vector的元素类型:


                       vector<int>::size_type//ok

                        vector::size_type//error


2.向vector添加元素


        push_back()操作接受一个元素值,并将它作为一个新的元素添加到vector对象的后面,也就是“插入(push)”到vector对象的“后面(back)”:
        //read words from the standard input and store the elements in a vector
        stringword;
        vector<string>text;  //emptyvector

        while(cin>>word)

        {

                 text.push_back(word);  //appendwordtotext
        }

       该循环从标准输入读取一系列string对象,逐一追加到vector对象的后面。首先定义一个空的vector对象text。每循环一次就添加一个新元素到vector对象,并将从输入读取的word值赋予该元素。当循环结束时,text就包含了所有读入的元素。

3.vector的下标操作


      vector中的对象是没有命名的,可以按vector中对象的位置来访问它们。通常使用下标操作符来获取元素。vector的下标操作类似于string类型的下标操作。
      vector的下标操作符接受一个值,并返回vector中该对应位置的元素。vector元素的位置从0开始。下例使用for循环把vector中的每个元素值都重置为0:
           //reset the elements in the vector to zero
           for(vector<int>::size_type  ix=0;   ix!=ivec.size();  ++ix)
                ivec[ix]=0;

和string类型的下标操作符一样,vector下标操作的结果为左值,因此可以像循环体中所做的那样实现写入。另外,和string对象的下标操作类似,这里用size_type类型作为vector下标的类型。


      提示:  在上例中,即使ivec为空,for循环也会正确执行。ivec为空则调用size返回0,并且for中的测试比较ix和0。第一次循环时,由于ix本身就是0,则条件测试失败,for循环体一次也不执行。

4.下标操作不添加元素


     初学C++的程序员可能会认为vector的下标操作可以添加元素,其实不然:
                vector<int>ivec;    //emptyvector
                for(vector<int>::size_typeix=0;ix!=10;++ix)
                  ivec[ix]=ix;   //disaster:ivec has no elements

     上述程序试图在ivec中插入10个新元素,元素值依次为0到9的整数。但是,这里ivec是空的vector对象,而且下标只能用于获取已存在的元素。


       这个循环的正确写法应该是:
             for(vector<int>::size_typeix=0;ix!=10;++ix)
                 ivec.push_back(ix);   //ok:adds new element with value ix
       必须是已存在的元素才能用下标操作符进行索引。通过下标操作进行赋值时,不会添加任何元素。
       警告:仅能对确知已存在的元素进行下标操作
        对于下标操作符([]操作符)的使用有一点非常重要,就是仅能提取确实已存在的元素,例如:
          vector<int>ivec;//empty vector
          cout<<ivec[0];//Error: ivec has no elements!
          vector<int>ivec2(10);//vector with 10 elements
          cout<<ivec[10];//Error:ivec has elements 0...9

    试图获取不存在的元素必然产生运行时错误。


附:常用方法
1.push_back()   在数组的最后添加一个数据
2.pop_back()    去掉数组的最后一个数据
3.at()                得到编号位置的数据
4.begin()           得到数组头的指针
5.end()             得到数组的最后一个单元+1的指针
6.front()        得到数组头的引用
7.back()            得到数组的最后一个单元的引用
8.max_size()     得到vector最大可以是多大
9.capacity()       当前vector分配的大小
10.size()           当前使用数据的大小
11.resize()  改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve()      改变当前vecotr所分配空间的大小
13.erase()         删除指针指向的数据项
14.clear()          清空当前的vector
15.rbegin()        将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend()        将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty()        判断vector是否为空
18.swap()         与另一个vector交换数据  

vector对象的操作

vector标准库提供了许多类似于string对象的操作,下面列出了几种最重要的vector操作. v.empty()  如果v为空,则返回true,否则返回false.v.size()   返回v中...
  • cool_mirror
  • cool_mirror
  • 2007年07月27日 17:09
  • 2644

c++ vector对象方法用法

C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。 标准库vector类型使用需要...
  • u011269801
  • u011269801
  • 2014年03月23日 15:34
  • 1369

vector对象、下标操作

一、vector对象的操作:1、向vector添加元素push_back()操作接受一个元素值,并将它作为一个新的元素添加到vector对象的后面,也就是“插入(push)”到vector对象的“后面...
  • lovemysea
  • lovemysea
  • 2010年02月10日 01:01
  • 14843

C/C++——vector的基本操作总结

标准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,接下来分别从以下的几个方面总结: vector对象的定义和初始化 ve...
  • google19890102
  • google19890102
  • 2016年06月17日 16:45
  • 6907

C++vector的使用总结及常用vector操作

C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分,使用时需包含头文件: #include C++ vector类有两种使...
  • fanyun_01
  • fanyun_01
  • 2017年02月26日 21:11
  • 3175

vector中元素为类对象时的一些使用方法

通常要使用一个vector来存放一些类对象时,基本都是使用以下的方法: 1.vector labels(1000),这里则是使用Label类的默认无参构造函数来实现该vector的初始化(这里假设L...
  • foresttserof
  • foresttserof
  • 2015年07月12日 21:13
  • 278

由C++ STL的vector容器中存储的对象拷贝引起的对capacity属性 的理解

【起因】 在测试C++中通过基类引用做形参实现多态的时候,写过一段很挫的测试程序,如下: Base b; Derived1 d1; Derived2 d2; Derived3 d3; vector ...
  • IIcyZhao
  • IIcyZhao
  • 2013年09月22日 18:54
  • 3395

C++中vector向量的基本操作

vector向量是一种简单高效的容器,具有自动内存管理功能。对于大小为n的vector容器,它的元素下标是0~n-1。 vector有二个重要方法: begin(): 返回首先素位置的迭代器。 ...
  • liuwu265
  • liuwu265
  • 2014年04月30日 13:20
  • 1358

vector是同一种类型的对象的集合

vector是同一种类型的对象的集合,每个对象有一个对应的整数索引值,也可称为一种容器。   vector是一个类模板。   vector一个重要特性,vector对象动态增长,运行时高效的添加元...
  • u012402926
  • u012402926
  • 2015年10月22日 16:24
  • 790

cocos2d一些注意事项及vector删除对象的方法

convertToNodeSpace 不考虑scale的影响 setContentSize只设置内容大小,影响之后的锚点位置,但是不影响绘制效果。超过contentSize的部分继续绘制  setTe...
  • u012944472
  • u012944472
  • 2015年01月30日 19:37
  • 867
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vector 对象操作
举报原因:
原因补充:

(最多只允许输入30个字)