看来任何理论只有运用在实践中才尤其现实意义,学习STL已有很长一段时间了,由于上个月经济比较紧张,是通过繁体的电子版来学习,并且上班后不像念书时那么努力,效果显然低下很多。
简单的应用STL也许并不太困难,但从这一段时间的学习,明白了以下几个概念和STL框架的工作模式。
简单的,可以认为STL是由以下几个部分协同工作来组成我们的各种需求的:
(1)容器 用于存储数据。STL提供的容器有vector、deque、list、set、multiset、map、multimap以及所谓的容器适配器stack、queue等用于满足不同类型的数据存储需要。
(2)算法 算法用来对容器中的数据进行诸如排序、查找、删除等各种操作。
(3)迭代器 顾名思义,迭代器用来在容器中一个接一个的遍访元素。迭代器的运用使得容器和算法可以各行其道,彼此独立,容器提供迭代器,算法通过迭代器操纵容器。
(4)仿函式 在没见到正式的简体称呼之前,姑且按繁体叫法。仿函式的使用使得STL中的算法得以无限扩展,通过为算法提供具体情况下的仿函式,标准算法能完成更多的任务。仿函式之于算法,犹如钻头之于电钻,不同的钻头装在同一个电钻上完成不同的任务。如果没有电钻,钻头便没有存在的意义。
乍看之下,STL不像MFC那样那么难学,初学者很容易就可以写出STL的应用程序,MFC的难学在于它的浩瀚,STL不那么浩瀚,但有点像金庸小说中的武术口诀,口诀每个弟子都会,能领悟多少看你的天分了。STL并不仅仅靠天份,在明白它的机理的情况下,只能多多运用才能称得上熟悉它了,因为它提供给我们的是一个平台和一种扩展机制而不是现成的拿来即可套用的冬冬。