回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C++之父的FAQ >> 普通 FAQ >> [翻译] 何谓泛型编程?其伟大之处何在?
最 近 更 新
[翻译] 为何 C++ 没被用..
[转] 你推荐哪个C++编译..
[转] 你有没有想到C++会..
[转] C++是面向对象语言..推荐
[翻译] 为何 C++ 如此庞..
[翻译] 您是使用何种语..
[翻译] “C++”何得此名?
[翻译] C++ 归您所有吗?
[转] 为什么AT&T要支持C..
[转] 你为什么要发明C++?
最 新 推 荐
[转] C++是面向对象语言..推荐
[翻译] 您怎么看待 C++/..推荐
[翻译] 何谓泛型编程?..推荐
[翻译] 什么是面向对象..推荐
[转] 如果不必考虑和 C ..推荐
[翻译] 类的伟大之处是..推荐
[翻译] C 是 C++ 的子集..推荐
热 门 排 行
[转] C和C++的区别是什..
[翻译] 为何 C++ 没被用..
[转] 你推荐哪个C++编译..
[翻译] 什么是面向对象..推荐
[转] 学习C++从哪本书开..
[翻译] 类的伟大之处是..推荐
[转] 我怎么开始学习C++..
[转] 学习C++需要多少时..
[翻译] C 是 C++ 的子集..推荐
[翻译] 为何编译 C++ 版..
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

[翻译] 何谓泛型编程?其伟大之处何在?


来源:蚂蚁的 C/C++ 标准编程 作者:Bjarne Stroustrup 翻译:antigloss 等级:精品
发布于2007-01-12 21:36 被读710次 【字体:

    泛型编程(Generic Programming, GP)是一种基于参数化(parameterization)的编程技巧:可以使用类型参数化另一种类型(例如,vector 的元素类型就是通过参数确定的);算法也可以参数化另一种算法(例如,使用比较函数参数化排序函数)。GP 的目的是将有用的算法或者数据结构尽可能地一般化,并使其最优化。例如,如果没有 GP,你必须为整型 vector 专门写一个类;然后,为了寻找其中的最大值,你又得为它写一个专门的函数。但是,使用 GP 可以把一切变得更美好:只需要写一个类,即可拥有任何类型的 vector;只需要写一个函数,即可寻找任何类型 vector 中的最大值。例如:

      vector<string>::iterator p = find(vs.begin(), vs.end(), "Grail");

      vector<int>::iterator q = find(vi.begin(), vi.end(), 42);

这些例子出自标准模板库(ISO C++ 标准库中容器和算法那部分)。TC++PL 中,漫游标准库那章对标准模板库(Standard Template Library, STL)作了简要的介绍。

    GP 在某些方面比 OOP 要灵活得多。特别是,它不依赖于层级。例如,int 和 string 之间没有任何层级关系。总的来说,GP 的结构化程度更甚于 OOP。事实上,GP 常被称为“参数多态(parametric polymorphism)”;而 OOP 常被称为“ad hoc 多态”。就 C++ 而言,GP 于编译时就解析了所有名称;它不需要任何动态(运行时)调度。因此,GP 在对运行时效率要求很高的领域占据了主导地位。

    请注意,GP 并非万灵丹。很多时候,程序并不需要参数化多态,而需要运行时调度(OOP)。

原文地址:http://www.research.att.com/~bs/bs_faq.html#generic

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 Bjarne Stroustrup 翻译:antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C++ 之父的言论
[转] 我该把const写在类型前面还是后面?
[翻译] 我应该使用按值传递还是按引用传递?

上一篇:[翻译] 什么是面向对象编程?它的伟大之处是什么?
下一篇:[翻译] 为什么 C++ 允许不安全的代码?

共有评论 0 条 网友评分 1分 查看全部评论

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss