vector 对象的定义和初始化

原创 2013年12月05日 15:07:20

      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对象,然后再动态地增加元素。(待续)


vector对象的定义和初始化

第一部分 使用入门 vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性。而且vect...
  • liulina603
  • liulina603
  • 2015年03月12日 14:30
  • 5302

定义和初始化vector对象

和任何一种类类型一样,vector模板控制着定义和初始化向量的方法。下面列出了定义vector对象的常用方法。**默认初始化**vector对象从而创建一个指定类型的空vector:vector sv...
  • hejun_haitao
  • hejun_haitao
  • 2015年08月30日 10:00
  • 1600

c++vector对象初始化

C++vector对象初始化因为最近在准备C++,用到了vector STL,但是发现自己完全不太会用,所以上网查了一下一些常用的初始化方法(其实就是把vector当做一个安全的动态数组即可),其他使...
  • qq_15437667
  • qq_15437667
  • 2016年08月15日 23:24
  • 3222

vector对象的定义和初始化以及vector迭代器iterator

vector对象的定义和初始化 vector类定义了好几种构造函数,用来定义和初始化vector对象。 vectorT> v1; vector保存类型为T的对象。默认...
  • Davis_Chou
  • Davis_Chou
  • 2012年12月04日 17:09
  • 2106

vector定义和初始化

  • 2012年05月03日 22:42
  • 12KB
  • 下载

vector对象的初始化

vector 不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector 类型的每一种都指定了其保存元素的 类型。因此,vector 和 vector 都是数据类型。  下表...
  • wangchao701123
  • wangchao701123
  • 2017年01月12日 17:26
  • 143

vector 多维向量定义及其初始化

using namespace std; 一维向量: vectorint> vector_1D_1;//只定义向量 vectorint> vector_1D_2(n);//定义的同时初始化大小...
  • sdnulixianrui
  • sdnulixianrui
  • 2017年12月14日 18:56
  • 23

一些可变长度对象(string对象、vector对象 ...)作为结构体或类的成员,会不会动态改变结构体或类所定义的变量的大小呢?

可能是我自身的原因,经常性的杞人忧天!        在接触到C++的一些类时,想的有点多了。事实证明,我确实想多了。但是我觉得可能会有和我一样会多想的小伙伴,我在这分享一个我想多了的栗子!   ...
  • SunXiWang
  • SunXiWang
  • 2017年11月21日 13:23
  • 82

实例4 矢量(Vector)对象的操作.rar

  • 2008年11月29日 10:40
  • 2KB
  • 下载

黑马程序员—OC学习笔记—多个参数方法,匿名类,自定义对象初始化方法

———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流!———— 本节内容,OC多个参数方法,匿名类,自定义对象初始化方法...
  • tigerleis
  • tigerleis
  • 2015年03月30日 10:57
  • 264
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vector 对象的定义和初始化
举报原因:
原因补充:

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