traits和policy在泛型编程里面还是挺常见的。像stl的string实现里面就用到了traits,boost里面也很多地方用到traits。
traits和policy很多时候都会一起使用,让我们在泛型编程里面多了一些思路。
traits:中文解释为特征,记得候捷在《stl源码剖析》那本书里面还叫做萃取什么的。当我们想从一个类型身上获取他的一个附加特性的时候,往往可以考虑traits。...
分类:
编程语言 时间:
2014-12-17 12:53:23
阅读次数:
129
traits是个很好玩的东西,在泛型编程里面很常见。最早出于老外的一篇论文。http://www.cantrip.org/traits.html?seenIEPage=1 建议仔细阅读。
首先我们来看一段代码。
template
T accum(const T* ptr, int len)
{
T total = T();
for (int i = 0; i < len; i++)...
分类:
编程语言 时间:
2014-12-16 17:10:33
阅读次数:
270
高效C++ --模板与泛型编程
在C++中模板体现的是编译器多态,virtual体现的是运行期多态。
关于typename的双重含义:
在声明template参数时,不论使用关键字class或typename,意义完全相同。
但是C++并不总是把class和typename视为邓建。有时候必须使用typename。
Template内出血的名称如果依于某个template参数,称之为从属...
分类:
编程语言 时间:
2014-12-15 23:42:19
阅读次数:
405
1.C语言中的struct是纯粹的结构体,没有访问权限的概念2.C语言中用void* 来实现泛型编程,也是C++类和模板底层实现的基础,就是用void*来实现的#include//struct LinkNode//{// int num;//数据域// struct LinkNode* ...
分类:
编程语言 时间:
2014-12-07 00:05:29
阅读次数:
317
如果我们要设计一个堆栈,不管传入的数据类型,例如整形或字符型,都可以正确的处理,我们要怎么做呢?当然传统的方法我们也可以实现,但是不太好做,比较麻烦。现在我们来介绍一下更通用的一个方法。C++ STL提供了容器(Container),现在我们来看下容器stack怎么实现的。...
分类:
编程语言 时间:
2014-12-03 14:20:49
阅读次数:
250
1:本章实例中,compare(const T &a,const T &b),在调用实例compare(“s”,”ss”)时编译出错,这是因为字面值”s”,”ss”的类型不一样,char * 的长度不一致导致;而如果是使用compare(const T a, const T b),则编译通过,因为这...
分类:
其他好文 时间:
2014-12-01 20:37:48
阅读次数:
155
一 C++虚拟函数(C++ virtual function)杂谈
我们在编程的时候,经常会遇到这样的情况,假设有两个对象,你要在函数中分别调用它们的OnDraw方法,我们以前的做法一般是这样的。
void f(int iType)
{
switch(iType)
{
case 1:
//CCircle OnDraw
break;
case 2:
//...
分类:
编程语言 时间:
2014-12-01 10:12:17
阅读次数:
158
完整的源代码及用法测试代码可以在我的资源中去下载.
C++语法不支持模板函数/模板成员函数作为回调函数,同时把运行期代码向编译期代码转换也只有switch...case或者if..else能够实现。
如果case比较多的时候,代码非常臃肿,而且类似的大片代码中,往往只有一个参数的不同,其它都是相同的。这对于用户来说,都是一个大量的重复性的hard-code性的负担,而且也容易导致出...
分类:
其他好文 时间:
2014-11-30 12:37:05
阅读次数:
283
C++模板的学习会遇到各种各样的问题,对于一个某种程度上的新手而言,难免会碰到一些问题。但泛型编程拥有着“双拳敌四手”的绝妙心法,威风八面,实在也让自己按捺不住。前些天自己一次对reverse模板的实现过程让自己体会到解决问题的乐趣,所以如今每每遇到问题就会尝试着去探个究竟,有时候自觉也陷落于诸多语...
分类:
其他好文 时间:
2014-11-29 11:46:17
阅读次数:
175
1.Java泛型概述
1.1什么是泛型
泛型(Generics)是对Java语言的类型系统的一种扩展,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
1.2为什么要使用泛型
在使用泛型前,存入集合中的元素可以是任何类型的,当从集合中取出时,所有的元素都是Object类型,需要进行强制类型转换,转换到特定的类型。这个强制类型转换可能会引起运行时的错误。
在使用泛型前,要...
分类:
编程语言 时间:
2014-11-21 23:22:50
阅读次数:
391