vector 对象的定义和初始化

      C++   支持两种初始化变量的形式:复制初始化直接初始化。复制初始化语法用等号(=),直接初始化则是把初始化式放在括号中:

      int  ival(1024);

      int  ival = 1024;

两种情况的初始化值是相同的。

      vector 类定义了好几种构造函数,用来定义和初始化 vector 对象:

      

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

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

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


1. 创建确定个数的元素

      若要创建非空的 vector 对象,必须给出初始化元素的值。当把一个 vector 对象复制到另一个 vector 对象时,新复制的vector 中每一个都初始化为原 vector 中相应元素的副本。但这两个 vector 对象必须保存同一类型:

       

       vector<int> ivec1;

       vector<int> ivec2(ivec1);

       vector<string>  svec(ivec1);

       可以用元素个数和元素值对 vector 对象进行初始化。构造函数用元素个数来决定 vector 对象保存元素的个数,元素值指定每个元素的初始值:

        vector<int> ivec4(10,-1);

        vector<string>  svec(10,"hi");


2 .值初始化

       如果没有指定一个初始化式,标准库会自动提供一个元素初始化值进行值初始化,具体值如何,取决与存储在 vector 中元素的数据类型。

       如果vector 保存内置类型 int 的元素,那么标准库将用 0 值创建元素的初始化式:

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


            vector<int>  fvec(10);   初始化10个0;


         如果向量保存类类型(如string)的元素,标准库将用该类型的默认构造函数创建元素初始值:


               vector<string> svec(10);


 关键概念:vector对象动态增长


        vector对象(以及其他标准库容器对象)的重要属性就在于可以在运行时高效地添加元素。因为vector增长的效率高,在元素值已知的情况下,最好是动态地添加元素。


        虽然可以对给定元素个数的vector对象预先分配内存,但更有效的方法是先初始化一个空vector对象,然后再动态地增加元素。(待续)


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值