前言
永远记住,编写代码的宗旨在于简单明了,不要使用语言中的冷僻特性,耍小聪明,重要的是编写你理解的代码,理解你编写的代码,这样你可能会做的更好。
--- 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 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器