一:几个概念
<1>c++标准库:c++ Standard Library。只要装了c++编译器,那么这个c++标准库自动就被安装进来了,可以在代码中包含头文件直接使用。引入的目的是解决一些反复使用的功能,我们直接使用即可。使用好标准库,是一个合格c++程序员的追求之一。
<2>c++标准模板库:Standard Template Library(STL)。包含在c++标准库之中,作为c++标准库的一个重要组成部分或者说是c++标准库的核心。STL深刻影响着c++标准库。
<3>泛型编程:Generic Programming。使用模板template为主要的编程手段来编写代码。我们可以认为:标准模板库就是使用泛型编程的编码方式所写的一套供我们非常方便使用的一套库。
二:推荐书籍
权威书籍 《c++标准库第二版》侯捷。概览即可,作为工具书,因为我们只需要使用其中的一部分的内容。
《STL源码剖析》侯捷。不建议自己详细剖析。
三:算法和数据结构谈
树、散列表(哈希表):数据结构。
疑惑:要不要把算法和数据结构的知识好好学一学?
<1>数据结构浅谈
数据结构:研究数据怎么存储的问题。栈、队列、链表、散列表(哈希表)、树、图。每一种数据结构都有一定的特点,有的存储快,有的查询快,我们需要通过写代码来了实现这些具体的数据结构。
<2>数据结构学习方法:要求有简单认识,不需要知道太多。
但是对栈,队列,链表这3个需要大概了解。
栈:后进先出
队列:先进先出
链表:有数据,有next指针。顺序存储的一种结构
其他的比如树、图、散列表。大概有一点印象最好。除非将来做和算法和数据结构相关工作,有必要精细研究每一种数据结构知识,否则没有必要花太多时间研究这些东西。我们直接使用就可以。当需要的时候直接学习。比如树中的红黑树,平衡等需要耗费大量时间,我们不需要去研究。
<3>推荐书籍
《算法导论》,工作中不需要就不要啃这种书
四:STL(标准模板库)发展史和各个版本
1998年被融入到c++标准中来,很多厂商去实现很多stl版本。
<1>HP STL:惠普stl,是所有STL实现版本的始祖。
<2>SGI STL:参考惠普STL实现的,Linux下的GUN(gcc、g++)用的就是这个版本。
<3>P.J.Plauger STL:参考惠普STL实现的,Visual C++一般用这个版本的STL。
还有其他版本…
五:标准库的使用说明
所有内部用到的东西都在std这个命名空间内。所以.cpp源码文件开头一般都会写入如下代码:using namespace std;
标准库中和stl相关的头文件有几十到几百个,许多头文件都不需要扩展名了。
六:STL的组成部分
<1>容器:vector、list、map。
<2>迭代器:用于遍历或者访问容器中的元素。
<3>算法:(函数),用来实现一些功能,search、sort、copy…
<4>分配器:(内存分配器),一般不需要明确指定,使用默认分配即可。
<5>其他:适配器、仿函数(函数对象)等。