学习STL时,就会遇到上述3个关于“数组”的模板。
C++提供了3个这样创建数组的方法,是3个不同团队开发的,不同的目的,所以就有了3个。
vectory:
vectory是个模板类,是STL的一部分(STL是C++的一个工具。里面写了很多方便使用C++编写程序的模板和方法,可以认为是一把屠龙宝刀),所以各种stl的各种操作都适用vectory(比如:排序,插入,重新排列,搜索,转到其它容器等操作)。
valarray:
valarray是个模板类,但不是stl的一部分,是为了处理数值分析而创建。可用于各种数据分析。所以stl和一些操作不能用于valarray,比如push_back, insert()。
array:
array是为了替代C++内置数组而开发的,使用数组操作更安全,更紧凑(其实我也没理解具体是怎么个紧凑法),他不是stl的一部分,但是吧,因为是数组,他有begin(),end(),rbegin(),rend()等。所以呢,一些stl操作可用于array。
所以,看了这3个数组模板是不是有点晕,这就是C++的复杂之一,一个概念,有很多种实现,各个实现有各个实现的特点。要是有一种集它们3个优点于一身的数组模板,那学起来也不用么费脑子了。