首页 > 代码库 > STL源码学习总结及项目下载地址
STL源码学习总结及项目下载地址
从开始看STL源码到今天差不多有一个月的时间了,在这研读STL源码过程中确实学习到了很多,深深被大师们的设计思想所打动。其中使用迭代器的思想是其STL的最大的亮点,通过泛型编程,是得所有的容器对外都提供统一的访问接口,而屏蔽掉了各个容器底层实现的细节。相对了面向对象的编程,泛型编程同样能够实现多态的功能,而且还具有更高的安全性以及效率,因为泛型编程就是编译期间就已经决定了变量的类型。
其次,给我印象最深刻的就是分层架构,和网络的七层协议一样,下面的模块为上面的模块提供服务,为上层提供一个接口即可,不用去计较下层是怎么实现的。例如:在STL中所有的容器都是会需要获取内存,释放内存。在我们日常编程中一般使用new和delete,但是在STL中为了高效,所以,尤其专门的空间配置器。在空间配置中,它专门处理如何高效的使用内存,然后对外提供接口。所有的容器都只是去使用这个接口来获取内存,而根本不用去管怎么获得内存的。
在学习STL源码过程,我萌发想自己动手去实现STL中容器的想法,于是,也动手去写了一下代码,也初步达到了预期的目的,所有的代码,在前面也文章中也粘贴出来了。但是,在写的过程中,难免会修改前面所写的,重新构建其架构,使其更加完善。因此,我决定把项目的最终版放网上供大家相互学习。
在这个STL仿写的项目中,我使用的是code:blocks编译器,使用这个编译器,下载后可以直接运行。其功能有:我们实现了空间配置器,迭代器,Vector,list,deque,set,map五大容器的实现,其实还有stack,queue,prority_queue没有实现,这几个适配器都是以前面的容器为基础实现的,还有hash_map,hash_set也没有实现,这个等以后有时间了在写把,写完也会放在博客里的~
下载地址:http://download.csdn.net/detail/a_1_2_ab/7268703