1.7.4  STL编程概述

1.7.4 STL编程概述

STL作为C++通用库,主要由迭代器、算法、容器、仿函数、内存配置器和配接器等六大部分组成。程序员使用STL容器能够实现多种标准类型且操作便捷的容器。对于编程人员,标准化组件意味着直接使用现成的组件,不用重复开发。使用STL最重要的是掌握基本理论和编程方法,了解STL编程技术,必须深刻掌握STL容器技术和STL迭代器技术。

STL提供了一组表示容器、迭代器、仿函数和算法的模板。容器是类似数组的单元,可存储若干个值,且STL容器是同质的,即存储的值类型相同;算法是完成特定任务的处方;迭代器能够用来遍历容器的对象,与能够遍历数组的指针类似,是广义指针;仿函数是类似于函数的对象,可以是类对象或函数指针。STL使程序员能够构造各种容器和执行各种操作。

下面以矢量为例,简要讲述矢量模板的使用。在数学计算和STL模板中,vector对应数组,提供与valarray和ArrayTP类似的操作。而STL为使vector矢量具备通用性,在头文件<vector>中定义了vector模板。具体方法为:创建vector模板对象,使用通常的<type>表示法指出要使用的类型;然后使用初始化参数决定矢量的大小,并定义矢量动态内存。例如,

978-7-111-51399-5-Chapter01-132.jpg

内存分配器是用来管理对象内存的。在STL容器模板中,一般都有一个可选的模板参数。例如,

978-7-111-51399-5-Chapter01-133.jpg

若省略该模板参数的值,则容器模板将默认使用allocator<T>类。类allocator以标准形式使用new和delete内存管理方式。下面举例说明。例1-31中创建了两个vector对象:一个是int规范;另一个是string规范。

提示

请注意代码中的黑体字。

例1-31

978-7-111-51399-5-Chapter01-134.jpg

978-7-111-51399-5-Chapter01-135.jpg

例1-31的执行效果如图1-17所示。

978-7-111-51399-5-Chapter01-136.jpg

图1-17 例1-31的执行效果

总结

本小节简要介绍了STL模板的一些特性,并以vector矢量为例,简要讲述其使用方法。