STL中,traits编程技法得到了很大的应用,了解这个,才能一窥STL奥妙所在. 先将自己所理解的记录如下: Traits技术可以用来获得一个 类型 的相关信息的. 首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型: template <typename T>class myIterator{ ...}; 当我们使用myIterator时,怎样才能获知它所指向的元素的类型呢?我们可以为这个类加入一个内嵌类型,像这样:template <typename T>…
     模板是C++中很重要的一个特性,利用模板可以编写出类型无关的通用代码,极大的减少了代码量,提升工作效率.C++中包含类模板.函数模板,对于需要特殊处理的类型,可以通过特化的方式来实现特定类型的特殊操作.        最近工作中,需要处理CONT<TYPE>这种复合类型和T这种自定义类型的模板特化,因为CONT类型有五种左右需要特殊处理,其余的可以用默认处理函数,TYPE的具体类型有上千种,但是TYPE类型不涉及不同的操作.      方案一:采用两个模板参数 template &l…
     模板是C++中很重要的一个特性,利用模板可以编写出类型无关的通用代码,极大的减少了代码量,提升工作效率.C++中包含类模板.函数模板,对于需要特殊处理的类型,可以通过特化的方式来实现特定类型的特殊操作.        最近工作中,需要处理CONT<TYPE>这种复合类型和T这种自定义类型的模板特化,因为CONT类型有五种左右需要特殊处理,其余的可以用默认处理函数,TYPE的具体类型有上千种,但是TYPE类型不涉及不同的操作.      方案一:采用两个模板参数 template &l…
#include <iostream> using namespace std; struct __xtrue_type { }; // define two mark-type struct __xfalse_type { }; class CComplexObject // a demo class { public: virtual void clone() { cout << "in clone" << endl; } }; class CD…
1.引言 C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现.目前,STL在C++社区中得到了广泛的关注.应用和研究.理解和掌握模板是学习.应用和研究以及扩充STL的基础.而STL模板实例中又充斥着大量的模板特化和偏特化. 2.模板的定义 (1) 类模板 定义一个栈的类模板,它可以用来容纳不同的数据类型 说明如下: template <class T> class stack { private: list* to…
转载自:http://hi.baidu.com/klcdyx2008/blog/item/5adbf77b79f316f90bd1873c.html 1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现.目前,STL在C++社区中得到了广泛的关注.应用和研究.理解和掌握模板是学习.应用和研究以及扩充STL的基础.而STL模板实例中又充斥着大量的模板特化和偏特化. 2.模板的定义(1) 类模板定义一个栈的类模板,…
1.C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板.我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样显然不利于程序的扩充和维护.C++模板就应运而生.C++的模板提供了对逻辑结构相同的数据对象通用行为的定义.这些模板运算对象的类型不是实际的数据类型,而是一种参数化的类型.C++中的模板分为类模板和函数模板. 注意: 编译器并不是把函数模板处理成能够处理任何类型的函数:函数模板通过具体类型产生不同的…
OOP面向对象编程 GP泛型编程(generic programming) 两者的主要区别就是OOP将数据和对数据的操作放在一起, GP就是将数据和操作独立开来 GP:   数据就是container进行存储,操作就是函数,也就是最数据操作的算法,container和algorithn都可以各自闭门造车,之间通过iteration联通就可以了 比如说sort sort(begin,end,cmp) algorithm通过iteration操作确定范围,并通过iteration来取出contain…
http://cppblog.com/SmartPtr/archive/2007/07/04/27496.html (1) 类模板定义一个栈的类模板,它可以用来容纳不同的数据类型 template <class T> class stack { private: list* top; public: stack(); stack(const stack&); ~stack(); void push(T&); T& pop(); //… }; 类模板的使用除了要在声明时指…
C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板.我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样显然不利于程序的扩充和维护.C++模板就应运而生.C++的模板提供了对逻辑结构相同的数据对象通用行为的定义.这些模板运算对象的类型不是实际的数据类型,而是一种参数化的类型.C++中的模板分为类模板和函数模板. 类模板如下: #include <iostream>using namespace std;…