首先,学习一个东西一顶要弄清楚它产生的背景,和他的特性在哪儿。先来看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是本好书。但可惜,越高级语言的应用书籍冗余性太多,尤其是外国的经典。作者都是拼命的把读者看成一个傻瓜,这对于一个入门的新手很合适,但是对于有基础,并且有自己一套学习方法的人很反感。
看完第一二篇后,我自己总结了一套语法规则,和一些重载的优先的。并且特别好奇的看了编译可以直接查找的特性(这个绝对是个副产物)。基本的几点我也总结上,到后面的几篇,我发现无一例外都是在告戒这些东西和注意点。实在是很没意思。。刷刷刷直接翻到最后几章。
那么我现在的学习方法是,多从一个例子里总结用到的技术方案,多怀疑,多尝试,你从一个例子里得到的越多,你也越省时间,也越锻炼自己。剩下的就是多编码经验,书都是次要的了。什么书应该认真看?纯理论的。。
我之前也简单说过,你真正掌握和吃透技术,不是知道他的技术点,而是了解他要给予的你思想,然后综合产生你自己的思想信仰。
分享到:
相关推荐
10. **STL中文手册**:一份完整的STL中文参考手册,包含了所有STL组件的详细描述、接口和示例,是查阅和学习STL不可或缺的工具。 通过这些资料的学习,读者可以系统地了解STL的基本概念,掌握其主要组件的使用,...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效、灵活的数据结构和算法。STL的主要组件包括容器、迭代器、算法和函数对象,这些组件共同构成了强大的...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且可重用的数据结构和算法。STL的主要组成部分包括容器、迭代器、算法和函数对象,这些组件共同构成了...
STL的学习不仅仅是掌握每个组件的基本用法,更重要的是理解其背后的泛型编程思想和设计模式,这将有助于写出更加高效、可维护的C++代码。对于C++程序员来说,熟练掌握STL是成为高手的重要一步,因为STL的使用能显著...
STL的出现是计算机科学抽象能力发展的一个里程碑,它引入了泛型编程的概念,允许程序员编写不依赖于具体数据类型的代码,从而实现更高的复用性和灵活性。 在STL中,有六个关键的组件: 1. **迭代器(Iterator)**:...
根据提供的文件信息,标题与描述均提到了“c.STL 学习c语言的必看”,这表明文章的主题是关于C++标准模板库(STL)在C语言学习中的重要性,尽管C语言本身并不支持STL,但此处应当理解为C++语言的学习资料。...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它提供了高效、可重用的数据结构和算法。STL的学习涵盖了容器、迭代器、算法和函数对象等多个方面,对于深入理解和提升C++...
STL(Standard Template Library,标准模板库)是C++库的一部分,它提供了高效的数据结构和算法,极大地提高了C++程序员的生产力。 “大规模C++程序设计”这一主题通常涵盖如何在大型项目中有效地组织和管理C++代码...
5. 泛型编程:STL的核心思想是泛型编程,它强调代码的复用和抽象。理解模板的工作原理,以及如何使用模板类和函数来编写高效、灵活的代码。 6. 容器间的转换:学习如何在不同容器之间安全地转移数据,以及如何利用...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它提供了高效、灵活的容器、迭代器、算法等组件,极大地提高了程序员的开发效率。本教程将深入讲解STL的核心概念和使用技巧...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它提供了高效、可重用的数据结构和算法。STL的主要组件包括容器(containers)、迭代器(iterators)、算法(algorithms)...
本书共分5篇26章,以“C++编程技术→C++ STL泛化技术基础→C++ STL容器技术→C++ STL算法技术→C++ STL迭代器技术”为线索具体展开,通过大量的源码分析和应用实例,详细介绍了C++ STL的技术原理和使用方法。...
STL学习总结,介绍STL函数,容器的用法
《STL扩展技术手册(Extended STL)光盘》是一份宝贵的学习资源,它不仅包含了STL(Standard Template Library,标准模板库)的源码,还提供了各种实用的工具文件,帮助开发者深入理解和应用这个强大的C++编程工具。...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它提供了高效、可重用的数据结构和算法。STL的主要目标是提高代码的编写效率和可读性,通过使用泛型编程(Generic ...
它是C++标准库的一个重要实现,对STL的发展和推广产生了重大影响。 SGI STL的源码是开源的,其设计和实现体现了诸多优秀的编程思想和技巧。下面是对SGI STL源码的一些关键特点和描述:泛型编程、算法与容器的分离、...
一个vim插件,使vim支持stl库的语法高亮
STL,全称为Standard Template Library(标准模板库),是C++编程中不可或缺的一部分,它为程序员提供了高效且灵活的数据结构和算法。通过学习STL,我们可以显著提高代码的可读性、可维护性和运行效率。在接下来的...