选择显示字体大小

stl泛型编程与设计新思维


  前言

  永远记住,编写代码的宗旨在于简单明了,不要使用语言中的冷僻特性,耍小聪明,重要的是编写你理解的代码,理解你编写的代码,这样你可能会做的更好。 
                     --- herb sutter

  1998年,国际c++标准正式通过,标准化对c++最重要的贡献是:对“强大的抽象概念”给于更有力的支持,以降低软件的复杂度,c++提供了二种功能强大的抽象方法:面向对象编程与泛型编程。面向对象编程大家一定很熟悉了,这里就不再哆嗦了。提到泛型编程(generic programming),有的人可能还不太熟悉,但是提到stl,你就一定会有所耳闻了。stl(standard template library,标准模板库) 其实就是泛型编程的实现品,stl是由alexander stepanov(stl之父)、david r musser和meng lee三位大师共同发展,于1994年被纳入c++标准程序库。stl虽然加入c++标准库的时间相对较晚,但它却是c++标准程序库中最具革命性的部分,同时也是c++标准程序库中最重要的组成部分。由于新的c++标准库中几乎每一样东西都是由模板(template)构成的,当然,stl也不会例外。所以,在这里有必要先概要说明一下模板的有关概念。

  模板概念

  通过使用模板可以使程序具有更好的代码重用性。记住,模板是对源代码进行重用,而不是通过继承和组合重用对象代码,当用户使用模板时,参数由编译器来替换。模板由类模板和函数模板二部分组成,以所处理的数据类型的说明作为参数的类就叫类模板,而以所处理的数据类型的说明作为参数的函数叫做函数模板。模板参数可以由类型参数或非类型参数组成,类型参数可用class和typename关键字来指明,二者的意义相同,都表示后面的参数名代表一个潜在的内置或用户定义的类型,非类型参数由一个普通参数声明构成。下面是类模板和函数模板的简单用法:

template<class t1, int size>
class queue // 类模板,其中t1为类型参数,size为非类型参数
{
public:
explicit queue():size_(size){}; // 显式构造,避免隐式转换
……
template<class t2> void assign(t2 first,t2 last); // 内嵌函数模板
private:
t* temp_;
int size_;
}
// 类模板中内嵌函数模板compare的外围实现(如在queue类外实现)
template<class t1,int size> template<class t2>
void queue<t1,size>::assign (t2 first,t2 last) {}; // 模板的使用方法
int ia[4] = {0,1,2,3};
queue<int, sizeof(ia)/sizeof(int)> qi;
qi.assign(ai,ai+4);


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons