十二、C++中的array静态数组、vector动态数组的创建和优化
从现在开始我们终于开始讲标准库的类型了。这些也是C++的基础。本篇讲数组,重点讲C++中的静态数组array和动态数组vector。
从C++的数据类型角度来看,常量、变量是最底层的内置(built in)数据类型;指针和数组已经是复合类型(compound type)了。本篇这里讲的array数组和vector数组就已经是C++标准库的类型了。
C++标准库中有很多不同功能的库文件,比如支持输入输出相关的库文件iostream、支持字符串处理的string文件等。本篇我们讲的是数组,C++标准库中和数组相关的库,我们一般也叫标准模板库,因为是和容器相关的文件,就是里面装的都是容器,容器类型(container type)。这些容器包含特定的数据,所以被称为标准模板库,因为它可以模板化任何东西。整个数组库模板化意味着容器是它的底层数据类型。也就是说,容器包含的数据类型,实际上是由你决定,所有东西由模板(template)组成。如果你还不了解模板,那也不妨碍你先学习如何使用标准模板库,你只要知道模板可以处理你提供的底层数据类型。也就是你不需要编写自己的数据结构。
此后我们会重写很多C++中存在的数据结构,会对它们进行优化,使其比标准模板库中的快很多,因为标准模板库优先考虑的不是速度。也所以我们在实际工作中,一般是要创建自己的容器库,一般都比标准模板库快得多。
(一)单纯从数组的角度看,C++中的数组有4种实现方式:
第一种是兼容C数组的 类型 数组名[元素个数]