经典书籍比较多,其中最经典的就是《C++标准程序库:自修教程与参考手册》。算法
一、《C++标准程序库:自修教程与参考手册》编程
这本书做为学习STL的第一本书是绝对适合的,一开始就会有C++语言的必备知识,以避免你一头扎进STL中直接淹死。数组
《The C++ Standard Library》(中文版《C++ 标准程序库》)不只对每个程序库组件提供范围普遍的说明,也对繁杂的感念提供清楚明亮的解释,并描述高效运用这些组件时须要的实际编程细节,提出一个又一个的范例程序。
这本包含最新资料的完整书籍,反映出被 ANSI/ISO C++ 语言标准规格书归入的 C++ 标准程序库的结构。更明确地说,本书将焦点放在标准模板库(Standard Template Library)身上,检验其中的容器(containers)、迭代器(iterators)、仿函数(functors)和算法(algorithms)。数据结构
你还能够找到特殊容器、字符串(strings)、数值类别、国际化议题、IOStream。每个组件都有深入的呈现,包括其介绍、设计、运用实例、细部解说、陷阱、意想不到的危险,以及相关类别和函数的确切标记(signature)和定义。框架
一份看法深入的基础概念介绍和一个程序库综合鸟瞰,会对新手带来快速的提高。 ide
二、《Effective STL 中文版: 50条有效使用STL的经验》函数
说到Scott Meyers的大名,C++程序员应该是无人不知无人不晓,他开创性的写了两本C++巨著《Effective C++》和《More Effective C++》都是每个C++程序员必备书籍。学习
这本书天然也不例外,其中讲解了50条容易将C++程序员引入歧途的错误案例和正确修正使用方法。每个使用STL的程序员都必备该书。ui
三、《STL源码剖析》
侯捷先生出品的书籍,通常品质都有所保证。这也是侯捷先生本身原创的一本书,这本书主要是深刻到SGI版本的STL实现中,将STL的代码抽丝剥茧,将最鲜血淋漓的那部分取出来给你们指导清除。阅读这本书。
学习STL是次要的,学习数据结构是次要的,主要是要学习侯捷先生治学的精神和分析源代码的方式方法,这才是最重要的。这本书一再印刷,销量已经证实了一切。各大图书商城有售。
四、《STL扩展技术手册(卷1):集合和迭代器》
相信一大群读者没有据说过这本书,可是这本书也是很是值得推荐的一本STL书籍,这本书既不是教你STL怎么用,也不是教你STL的实现是怎么样的,而是教你如何扩展你本身的STL组件。基本上是国内C++图书界中惟一一本讲解STL扩展的专著。
做者以前写过一本《Imperfact C++》的书,这本书不知道为何在国内的销量也很差,可是该做者的C++技术造诣很是深厚,他的著做也是每个想要深刻学习C++的读者所必读的书籍。做者原本打算将STL 扩展技术手册分为1,2两卷出版,惋惜第一卷出版后,第二卷再也出不来了。
五、介绍
STL(StandardTemplate Library),即标准模板库,是一个具备工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++Standard Library)中,是ANSI/ISOC++标准中最新的也是极具革命性的一部分。
该库包含了诸多在计算机科学领域里所经常使用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。
从逻辑层次来看,在STL中体现了泛型化程序设计的思想(genericprogramming),引入了诸多新的名词,好比像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。
与OOP(object-orientedprogramming)中的多态(polymorphism)同样,泛型也是一种软件的复用技术;
从实现层次看,整个STL是以一种类型参数化(typeparameterized)的方式实现的,这种方式基于一个在早先C++标准中没有出现的语言特性--模板(template)。
若是查阅任何一个版本的STL源代码,你就会发现,模板做为构成整个STL的基石是一件千真万确的事情。除此以外,还有许多C++的新特性为STL的实现提供了方便;
六、STL的六大组件
· 容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可使用由容器类输出的迭代器;
· 迭代器(Iterator),提供了访问容器中对象的方法。例如,可使用一对迭代器指定list或vector中的必定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。可是,迭代器也能够是那些定义了operator*()以及其余相似于指针的操做符地方法的类对象;
· 算法(Algorithm),是用来操做容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象,函数自己与他们操做的数据的结构和类型无关,所以他们能够在从简单数组到高度复杂容器的任何数据结构上使用;
· 仿函数(Function object,仿函数(functor)又称之为函数对象(functionobject),其实就是重载了()操做符的struct,没有什么特别的地方
· 迭代适配器(Adaptor)
· 空间配制器(allocator)其中主要工做包括两部分:对象的建立与销毁和内存的获取与释放