Vector

http://blog.csdn.net/hancunai0017/article/details/7032383

http://www.cppblog.com/totti1006/archive/2009/09/01/94955.html


#include <vector>      //vector的引入

vector<type> name;     // 定义 type可以是简单数据类型也可以是类对象类型

vector<type>  v1;      // vector保存类型为type的对象。默认构造函数v1为空。

vector<type> v2(v1);   //  v2是v1的一个副本。

vector<type> v3(n, i); // v3包含n个值为i的元素。

vector<type> v4(n);     //v4含有值初始化的元素的n个副本  


1.push_back   在数组的最后添加一个数据    a.push_back(b)   将b添加在a列表的后面  

2.pop_back    去掉数组的最后一个数据  //去掉以后数据仍然存在,但是.size已经不显示,并且如果再次pushback写
                                   //  入,会在这个位置上覆盖写入

3.at                得到编号位置的数据     

4.begin           得到数组头的指针   //    这个指针是指迭代器而不是指的pointer,迭代器的使用与list的迭代
                                  //    器相似:iterator
                                  //    for(auto iterator=a.begin();iterator!=a.end;++)

5.end             得到数组的最后一个单元+1的指针


        //在vector里面,也是使用指针+1的方式指向下一个元素,只是这里的指针不是pointer ,而是iterator  

         在常规array里面,array本身代表了一个地址,而array+i代表了第i个元素

        在vector数组里面,地址通过vector.begin的方式获得,vector.begin+i则代表了数组里的第i个元素

        获得第i个元素的方法          (1).       *(vector.begin+i)
                                  (2).         vector.at(i) 


----------


6.front        得到数组头的引用       // a.front()就自动等于第一个元素,而且是引用,是可以直接修改的引用


7.back            得到数组的最后一个单元的引用
8.max_size     得到vector最大可以是多大


----------


9.capacity       当前vector分配的大小
10.size           当前使用数据的大小     a.capa/a.size()  已分配/已使用的大小

        //a.size比较实用,可以统计数组中元素的个数,而且是实际使用的个数

----------


11.resize         改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve      改变当前vecotr所分配空间的大小  


----------


13.erase         删除指针指向的数据项

      //erase仅仅针对迭代器指向的内容才是可以删除并有效的,并且效率相比pop_up更高

----------


14.clear          清空当前的vector  
                                //    清空但是size/capa不变因为内存仍然分配了那么多

15.rbegin        将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend          将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty        判断vector是否为空
                               // 为空则返回1,不为空则返回0





----------
    提高vector的使用效率.
      1)使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下。

          i)当进行insert或push_back等增加元素的操作时,如果此时动态数组的内存不够用,就要动态的重新分配当前大小的1.5~2倍的新内存区,再把原数组的内容复制过去。所以,在一般情况下,其访问速度同一般数组,只有在重新分配发生时,其性能才会下降。

          ii)进行pop_back操作时,capacity并不会因为vector容器里的元素减少而有所下降,还会维持操作之前的大小,只有size,作为真正使用到的大小才会发生改变

          iii)对于vector容器来说,如果有大量的数据需要进行push_back,应当使用reserve()函数提前设定其容量大小,否则会出现许多次容量扩充操作,导致效率低下。

       2)使用“交换技巧”来修整vector过剩空间/内存 vector<int>(ivec).swap(ivec);

       3) 用swap方法强行释放STL Vector所占内存 vector<int> v ; vector<int>().swap(v);



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值