对于STL的掌握, 侯捷将境界分为三层: 会用,明理,能扩展。 我自己在学习STL的过程中也有类似体会,为避免初学者走弯路, 下面是个人的一些学习经验和参考书籍:
《C++标准程序库:自修教程与参考手册》这本书既是STL学习的入门书,也是日后的重要参考手册,遇到任何STL用法方面的问题,基本上都可以在这本书上找到答案。
《Effective STL》 如果说前面这本书让你使用STL入门, 那么这本书是告诉你如何高效的使用STL以及如何规避STL的缺陷和陷阱。

看完前面的2本书, 在实际工作中尽量多用STL,经过一段时间, 基本上已经到达 "会用" 的境界了。

在 “明理” 阶段,个人推荐看《泛型编程与STL》,这本书是STL的著者写的, 他把STL的设计理念和架构层次解释的非常清楚,内部详细描述了STL的各种泛型需要满足的concepts, 该书也是STL实作是否符合标准的参考手册。个人建议即使你只关注“会用”STL, 也看一下这本书, 这本书会让你认识STL的本质。

最后一个阶段是扩展, 甚至自己重写STL, 参考书是《STL源码剖析》, 这本书是个人学习STL源码的绝佳书籍, 强烈推荐。当然看STL源码需要有一定的 “模板” 功力, 如果功力不够,可以先看下《C++ Templates》, 这是一本学习模板编程的标准书。

个人尝试山寨了下STL, 对STL的6大组件(containers, algorithms, iterators, functors, adaptors, allocators)都有涉及。 当然山寨STL不是为了重复造轮子,而是为了更好的理解和扩展STL。

源码下载: SimpleSTL
posted on 2013-04-03 16:54 Richard Wei 阅读(2510) 评论(2)  编辑 收藏 引用 所属分类: STL&GP

FeedBack:
# re: 山寨STL[未登录]
2013-04-17 16:27 | Rick
你好,从初涉STL到山寨STL,时间跨度是多少?  回复  更多评论
  
# re: 山寨STL
2013-04-18 09:29 | Richard Wei
@Rick
这个我觉得没有标准答案, 跟你的C++功底和STL的使用频率有关,而且个人觉得STL的学习方式既可以走"瀑布"模型,也可以走"敏捷"模型,。
所谓瀑布指的是每步都走踏实之后再进入下一步,比如STL用的很熟练之后再深入原理。所谓敏捷是指先把所有的东西都走一遍,知道大概情况之后再深入每个阶段。我觉得两种方式各有利弊, 主要还是看个人情况。
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理