您的当前位置:首页正文

C++中的vector对象(1)——vector对象的初始化

2024-11-25 来源:个人技术集锦

1、标准库类型vector表示对象的集合,其中所有对象的类型必须相同。因为vector容纳着“容纳着”其他对象,所以也常被称作容器。


2、想要使用vector必须包含适当的头文件。


3、vector是一个类模板。当使用模板实例化类时,需要提供额外的信息来指定编译器把模板实例化成什么样的类,并且需要提供哪些信息由模板自身决定。提供信息的方式总是这样:即在模板名字后面跟一对尖括号,在括号内放上信息。

   对于vector来说,提供的信息是vector内所存放对象的类型。

      vector<int> i;


4、vector能容纳绝大多数类型的对象作为其元素,但因为引用不是对象,所以不存在包含引用的vector。除此之外绝大多数内置类型和类类型都可以构成vector对象,甚至组成vector的元素也可以是vector。

   但是需要指出,在早期版本的C++标准中如果vector的元素还是vector或者其他模板类型,则其定义的形式与现在的C++11新标准略有不同。

过去vector<vector<int>"空格">
现在vector<vector<int>>

5、和任何一种类类型一样,vector模板控制着定义和初始化向量的方法。参考之前的文章《》:

   5.1、直接初始化:vector<string> i2(i1);//这里只能用另一个vector对象作为初始值

   5.2、拷贝初始化:vector<string> i2=i1;//这里只能用另一个vector对象作为初始值

   5.3、默认值初始化:vector<int> i;//空vector对象

   5.4、重复序列初始化:vector<string> i(5,"asd");//asdasdasdasdasd

   5.5、值初始化:可以只提供vector对象容纳的元素数量而略去初始值。此时库会创建一个值初始化的元素初值,并把它赋给容器中的所有元素。这个初值由vector对象中元素的类型决定。

      vector<int> i(10);//10个元素,每个都初始化为0

      vector<string> j(10);//10个元素,每个都是空string对象

      5.5.1、有些类要求必须明确提供初始值,如果vector对象中元素的类型不支持默认初始化,我们就必须提供初始的元素值。

      5.5.2、使用值初始化时,只能使用直接初始化。

   5.6、列表初始化:vector<int> i{0,1,2,3};或vector<int> i={0,1,2,3};   //用列表中元素的拷贝初始化i

            想要列表初始化vector对象,花括号里的值必须与元素类型相同。否则在编译器确认无法执行列表初始化时,便会尝试用值初始化或重复序列初始化。

            vector<string> i{10};//10个0

            vector<string> j{10,'s'};10个s

最后再次强调,如果想使用字面量来初始化vector对象的话,只能考虑使用重复序列初始化及列表初始化。

显示全文