【来信】

老师:

  您好,我看了您的很多博客内容,想请教您一些问题。


  以前自己跟着学校老师过过一遍基础的C++(谭浩强的书),现在打算自己好好的学C++,目前我也在看《C++ primer》,对语法知识和面向对象有了一定的理解(容器算法,模板方面还不太理解),现在我想做些题目,可是对OJ平台上的题目真是很烦(因为英语水平有限),往往不会去那么在意题目的细节,加上他评判的标准会不会太严格了,导致在细节上花了很多时间,而我只是想通过题目来巩固所学到的知识,并不是为了比赛去做题,也许做一些实例有帮助。。。


  老师能给我一些建议吗



【回复】


  看到你的信,我马上想到了我写过的OJ平台是一个锻炼问题解决能力的绝好的地方,但如果要有针对性地实践某一项技术,并不合适。OJ只在乎你是否能解决问题,速度快不快。由于“严格”,对缺乏训练的初学者也会造成心理上的影响。所以,我带领我的学生探索的路线,通过CSDN发博文,让“代码积累看得见”,以此用实践为主线,获得能力的提高。


  你在看的《C++ primer》,总体对语言、语法重视更多,在精心设计的例程中,能令人欣赏到语言的精妙之处,但并不能体会到相关的成份如何体现在项目中。我的博客里,带领我的学生开展的实践,也还都局限在基本内容之中,你可以看一看有没有值得你做的题目。的确,多做一些实例,是你能有所体悟的途径。但由于我暂时没有在这方面深入建设资源,不能给你提出具体的建议。泛泛而言:(1)不急着买书,到图书馆找一找对胃口的书看,完成上面的实例,我觉得应该有合适的书;(2)到一些开源社区找一些C++写的开源代码,或者看一些开源的算法库;(3)讲“设计模式”之类的书,用C++描述的关于数据结构和算法的书,其实现可能会用到模板。


  当然,OJ中的题目,也可以直接用上STL解决,这也是种方法,且有其优势。毕竟OJ题目从程序规模上是合适的,你的不适应,恰也是你需要提高的地方。做OJ题目,是个途径,而不是目标,不去参赛,参加训练也是很好的事,我希望你不要抵触。