首先,学习一个东西一顶要弄清楚它产生的背景,和他的特性在哪儿。先来看STL的特性,编
译期的动态。也就是说,根据类型来推导出代码的语法生成。如果你够聪明,你肯定会联想到
C/C++一些静态编译的东西,比如全局,比如static,比如enum,那么是否可以利用STL特性和这
些东西结合起来,弄出有意思的东西呢?比如让enum的值等于一个模板函数,比如在static函
数里做点判断。那么一些数的取值在编译器内完成,甚至打印出东西,也不足奇怪了。
其次,STL背景是某某人突然思考,对一个四则运算来说,提供的接口不应该根据类型不同而
重新设计,进而有了STL的概念。也就说,在STL提倡的背景里,所带来的思想是:在程序里,
任何东西都是数据+存储空间这么个概念,而存储空间是个抽象的概念,不应为数据的变化而
变化内部的操作。你见过一间房屋可以放下桌子,如果送来的是个箱子,就必须提供个货仓
吗?支持这个之上的,是人类不以计算机语言做为基础思考而衍生出的思维。反过来说,STL
提倡的正是一个OO数据处理的一个概念,而不是OO设计,甚至对OO设计没有任何挂钩(数据处
理和设计也有若干的交纵)。
最后,STL的语法糖衣确实非常的烦琐。为什么用得人少?我以为,在
语意数据的解释上,STL自相矛盾了。熟悉C的人都知道,无论多么抽象的对象和需求的表达,
操纵的都是内存的字节流而已。在接口简便的处理上,大家更宁愿使用typedef int,float,或
者class这样的数据类型做为接口,因为这已经够简洁了,有时候需要的并不是对所有数据的
容纳。对不同数据容纳,比如你用个class A的接口,现在却改个 class B,随之的绑定是内
部处理方法也不一样了。如果能将这些糖衣的语法(typename 之类的)改成像解释语言般的var
来表达,就显得简单易用得多了。毕竟这种语法的推导C++的一个特性,而不是它的一个功能
化。
---昨晚睡觉又想了下,进行补充
范型这个概念的提出肯定是对的。但是C++这种语法的实现,给人许多语法纠结的陷阱,虽然很强大,但是个人认为远不如java的舒服。其次,BJ博士说过,看到一个需求和问题,就应该用Class和STL不由自主的组装起来,也就是说,当有一天能够把逻辑的处理(比如OO的设计)和数据的容器(STL)随心所欲的结合起来的时候,就是小成了。
(一家之言,请莫恶意相加。我的最后一点想的不是很深入,但是我能感觉到范型做为OO数据处理带来的影响)
2009-9-22 0:16:12补记
C++ template是本好书。但可惜,越高级语言的应用书籍冗余性太多,尤其是外国的经典。作者都是拼命的把读者看成一个傻瓜,这对于一个入门的新手很合适,但是对于有基础,并且有自己一套学习方法的人很反感。
看完第一二篇后,我自己总结了一套语法规则,和一些重载的优先的。并且特别好奇的看了编译可以直接查找的特性(这个绝对是个副产物)。基本的几点我也总结上,到后面的几篇,我发现无一例外都是在告戒这些东西和注意点。实在是很没意思。。刷刷刷直接翻到最后几章。
那么我现在的学习方法是,多从一个例子里总结用到的技术方案,多怀疑,多尝试,你从一个例子里得到的越多,你也越省时间,也越锻炼自己。剩下的就是多编码经验,书都是次要的了。什么书应该认真看?纯理论的。。
我之前也简单说过,你真正掌握和吃透技术,不是知道他的技术点,而是了解他要给予的你思想,然后综合产生你自己的思想信仰。
分享到:
相关推荐
STL 学习资料STL 学习资料STL 学习资料
c++ STL, stl,stl的学习c++ STL, stl,stl的学习c++ STL, stl,stl的学习c++ STL, stl,stl的学习
STL学习代码STL学习代码STL学习代码STL学习代码STL学习代码STL学习代码
适合底层编程技术学习,对STL技术讲解不多
本书共分5篇26章,以“C++编程技术→C++ STL泛化技术基础→C++ STL容器技术→C++ STL算法技术→C++ STL迭代器技术”为线索具体展开,通过大量的源码分析和应用实例,详细介绍了C++ STL的技术原理和使用方法。...
STL学习总结,介绍STL函数,容器的用法
不错的STL文档学习资料不错的STL文档学习资料不错的STL文档学习资料不错的STL文档学习资料不错的STL文档学习资料不错的STL文档学习资料不错的STL文档学习资料不错的STL文档学习资料
一个vim插件,使vim支持stl库的语法高亮
STL经典学习代码实例,unique,search,
STL学习资料 收集,从网上收集的一些资料,汇总在一起。
stl模板视频学习教程.rar
STL入门 STL入门 STL入门 STL入门 STL入门 STL入门
很好的一个STL学习教程,特别适合初学者
它是C++标准库的一个重要实现,对STL的发展和推广产生了重大影响。 SGI STL的源码是开源的,其设计和实现体现了诸多优秀的编程思想和技巧。下面是对SGI STL源码的一些关键特点和描述:泛型编程、算法与容器的分离、...
不用多说了,经典的STL学习书籍;想学习STL的可以看看这本书,但是如果只是用用,倒也不用深入学习这个,毕竟太复杂了
解释了怎样结合STL组件来在库的设计得到最大的好处。这样的信息允许你对简单、直接的...那帮助你躲开闪资源漏、不可移植的代码和未定义的行为。讨论了优化代码的方法,所以你能使STL表现得像它应该的那样快速、光滑。
C++STL开发技术导引
STL模型的某些区域存在一些狭长的钝角三角形,它们对模型逼近误差的影响非常小,在精度允许的条件下可以将其忽略。通过剔除部分符合一定条件的钝角三角形,合理简化了STL模型,节省了文件存储空间和后续数据处理时间...
c.STL 学习c语言的必看 c.STL 学习c语言的必看
主要总结了自己学习STL的心得,适合于有基础者学习