泛型程序设计及STL(简体版).pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大局观:泛型程序设计( Generic Programming)与 STL 侯捷 jjhou@.tw = 1. 大局观:泛型程序设计与 STL 2. 泛型指标(Iterators)与 2000.02 Traits 技术 3. 泛型容器(Containers)的应用与实作 4. 泛型 2000.03 算法( Generic Algorithms)与 Function Objects 5. 各色 2000.04 2000.05 各样的 Adaptors 2000.06 十年前赶上 OO (Object Oriented ,面向对象)第一波工业浪潮的朋友们,想必今日有一番顾盼豪情,以及一份「好加在」的惊悚:「好加在」 搭上了 OO 的早班列车,不然今天就玩不下去了! 面对 Generic Programming (泛型程序设计),我有相彷的感觉。 我将撰写为期五次的系列文章,为各位介绍这个不算新却又有点新的观念与技术。 ●C++ Template, Generic programming, STL 1968 Doug McIlroy 发表其著名论文 Mass Produced Software Components ,揭橥了以「可重用软件组件(又称软件积木或软件 IC )」构筑标准链接 库的愿景。如今三分之一个世纪已逝, components software -- 以组件(组件)为本的软件 --大行其道。然而在许多领域中,标准化仍未建立。甚至 连任何软件一定会用到的基本数据结构和基本算法,对此亦付阙如。于是大量的程序员,被迫进行大量重复的工作,为的竟只是重复完成前人早已 完成而自己手上并未拥有的码。这不但是人力资源的浪费,也是挫折与错误的来源。 撇开追求技术的热诚不谈(也许有人确实喜欢什么都自己来),商用链接库可以拯救这些程序员于水深火热之中。只要你的老板愿意花一点点钱, 就可以在人力资源与软件开发效率上取得一个绝佳平衡。但是金钱并非万能,商用链接库彼此之间并无接口上的标准!换句话说你无法在发现了 另一套更好、更丰富、效率更高的链接库后,改弦更张地弃此就彼 --那可能会使你付出惨烈的代价。这或许是封闭型技术与观念带给软件组件公司 的一种小小的、短暂的利益保护。 除了「接口无标准」这一问题,另一个问题是,目前绝大部份软件组件都使用面向对象技术,大量运用继承与虚拟函式,导致执行成本增加。此 外,一旦运用面向对象技术,我们此刻所说的基础数据结构及各种基础算法,便皆需以 container (容器,放置数据的某种特殊结构)为本。资料, 放在 container classes 内(形成其 data members);操作行为,亦定义在 container classes 内(形成其 member functions );这使得耦合(coupling , 两物过度相依而不独立)的情况依然存在,妨碍了组件之所以为组件的独立性、弹性、互操作性(相互合作性,interoperability)。 换句话说,要解决这些困境,第一需要标准接口的建立,第二需要 OO 以外的新技术,俾能够比 OO 更高效率地完成工作。 C++ template是新技术的曙光。 一言以蔽之,所谓template机制就是,将目标物的数据型别参数化。一旦程序以指定自变量的方式,确定了这个(或这些)型别,编译程序便自动 针对这个(或这些)型别产生出一份实体。这里所说的实体,可以是一个 function body ,也可以是一个 class body 。而「由编译程序产生出一份实 体」的动作,我们称之为具现化(instantiation )。 针对目标物之不同,C++ 支持 function templates 和 class templates两大类型。后者的 members又可以是 templates (所谓member templates ),形成深 一 file:///C|/Users/Boy/Desktop/泛型程序设计与STL.html[2013/1/17 1:

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档