作为一个初学者,我最头疼的事就是分析源代码,但是不管怎么样,这块硬骨头始终需要我们去啃,因为当我们对一门语言的语法有个基础的了解之后,能加深对这么语言的理解和应用的最好最快的办法就是分析源代码了,所以我选择对C++的模板库进行源码分析。
首先,因为C++标准中只规定了,STL中每个类的接口,并没有规定它的具体实现,所以,对于STL的实现,流行着好几个不同的版本,关于这几个版本的详细介绍,在侯捷前辈的《STL源码剖析》中可以找到,这个大家可以自己找资料了解一下。不过,在这些实现版本中,以SGI版最为经典,但是它的源码不适合我们初学者直接上手分析。所以,一般我们都会选择VC6.0里面的实现版本 -- PJ版本,因为该版本的作者是P.J.Plauger,所以称为PJ版本。
PJ版本,如果大家有装VC++6.0的话,一般会在 C:\Program Files\Microsoft Visual Studio\VC98\Include 这个目录下找到PJ版STL的头文件,如果找不到,你也可以先创建一个STL容器的对象,例如list<int> my_list;编译,右键选择转到定义,找到list的头文件。
点击弹出菜单的 Go To Definition Of list 即可
因为vc6.0在64位机运行效果不太好,所以想要安装vc6.0的 话建议在虚拟机上装xp安装vc6.0,对于初学者来说,最好还是使用vc6.0。
如果你没有vc6.0 而且 你也不想安装它,我已经上传了这些源代码,你可以在这里下载 http://download.csdn.net/detail/github_36186488/9667968
我也上传了SGI版的STL源码,大家可以在这里下载 http://download.csdn.net/detail/github_36186488/9667971
另外 关于源码分析 大家可以参考两本书 PJ版的源码分析《STL中文版》 SGI版的源码分析 侯捷前辈的《STL源码剖析》
这两本书,我也都上传了 供大家参考
《STL中文版》 http://download.csdn.net/detail/github_36186488/9667981
《STL源码剖析》 http://download.csdn.net/detail/github_36186488/9667978
关于vc6.0因为比较大,我先不上传了,大家可以自己先找找,如果实在找不到,可以联系我。
下次我将会为大家分析PJ版的list源码,如果有同样在学C++的同学,我们可以相互关注,共同进步。