有了函数模板和类模板机制,就可以编写出通用的函数和类,如通用数组类、通用排序函数等。既然这些函数模板和类模板非常通用,那么,我们每个程序员都劳心费力一遍遍地重复制造轮子似乎没有必要,C++语言也考虑到了这一点。 1 标准模板库STLC++利用模板机制,实现了计算机科学领域常用的算法和通用数据结构,形成了具有工业级强度、健壮可靠的函数模板和类模板集合,称为标准模板库(Standard Template Libarary)。 C++的标准模板库STL,是一个函数模板和类模板的集合,这些模板从功能上划分为六个逻辑组件:
利用容器、算法、迭代器,我们可以: 1.1 把需要处理的数据或者对象放到容器中,进行有效的组织和存储。容器是实现各种数据结构的类模板集合,如vector、list、map等。 1.2 利用迭代器对容器中的元素进行存取访问。C++的迭代器是访问容器的泛型指针类模板,每种容器均附带自身的迭代器。 1.3 通过迭代器指定容器区间范围,利用算法对该区间范围内的容器元素进行操作和处理。算法是一组常用函数模板,如sort、find、copy等。 它们之间的配合关系如下图:
在上图中,容器中存储了一组整数,end表示容器最后一个元素的下一个位置。迭代器A指向容器的首元素,迭代器B指向容器尾元素的下一个位置,可以看出由迭代器A和迭代器B构成了一个左闭右开的容器区间[迭代器A,迭代器B)。然后,将此区间交给算法sort完成容器元素的排序工作。 因此,使用标准模板库STL编写程序的一般模式是: 首先利用容器模板构造出容器对象,把数据或对象放入容器;然后,使用迭代器构造出容器的区间范围;最后,把容器区间范围交给算法,由算法对区间范围内的容器元素进行操作和处理。 2 利用STL求解问题如有给定的一组字符串,要求计算出有多少个字符串以字母S打头。问题求解思路是先用一个容器存放字符串,然后通过迭代器遍历容器对以S打头的字符串计数。
运算结果:
阅读程序代码不难看出:使用标准模板库中的容器和算法,可以大大简化程序的逻辑。核心逻辑就是把字符串放到vector容器中,通过迭代器构造遍历容器的迭代器区间范围,然后用count_if函数遍历容器并计算。 |
| 本文出处: http://www.toutiao.com/a6427546786126168321/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|