读loki有感,TYPEList原理

问题一,简化版的TYPEList,只支持int型

template<int n>

class TYPEList

{

public:

int Head;

TYPEList<n-1> Tail;

};

template<>

class TYPEList<0>

{

public:

int Tail;

int Head;

};

测试代码

TYPEList<0> l0;

l0.Head = 1;

l0.Tail = 2;

TYPEList<2> l2;

l2.Head = 3;

l2.Tail.Head = 4;

l2.Tail.Tail.Head = 5;

l2.Tail.Tail.Tail = 6;

问题二:可以同过GetAt(int)获取值

template<int n>

class TYPEList

{

public:

int Head;

TYPEList<n-1> Tail;

int GetAt(int index )

{

if( n+1 == index )

return Head;

return Tail.GetAt(index);

}

};

template<>

class TYPEList<0>

{

public:

int GetAt(int index)

{

if( 1 == index )

return Tail;

return Head;

}

int Tail;

int Head;

};

测试代码

TYPEList<0> l0;

l0.Head = 1;

l0.Tail = 2;

TYPEList<2> l2;

l2.Head = 3;

l2.Tail.Head = 4;

l2.Tail.Tail.Head = 5;

l2.Tail.Tail.Tail = 6;

int i1 = l2.GetAt(0);

int i2 = l2.GetAt(1);

int i3 = l2.GetAt(2);

int i4 = l2.GetAt(3);

问题三,类型不再限于int,但最多集成3个变量。

class NullType

{

};

template <class T, class U>

struct Typelist

{

T Head;

U Tail;

};

template <typename T1  = NullType, typename T2  = NullType, typename T3  = NullType >

struct MakeTypelist

{

private:

typedef typename MakeTypelist< T2 ,T3>::Result TailResult;

public:

typedef Typelist<T1, TailResult> Result; };

template<>

struct MakeTypelist<>

{

typedef NullType Result;

};

测试代码:

MakeTypelist<ULONG,CString,int>::Result User,User2;

User.Head = 1;

User.Tail.Head = "何志丹";

User.Tail.Tail.Head = 35;

User2 = User;

template <class AtomicType, template <class> class GenFunc>

struct IterateTypes

{    template<class II>

void operator()(II ii)

{

GenFunc<AtomicType> genfunc;

*ii = genfunc();

++ii; //Is this even needed?

}

};

时间: 2024-08-02 11:02:46

读loki有感,TYPEList原理的相关文章

读loki有感,编译阶段发现两个类能否转化

开发环境:VS2005(VC8) 以下代码在VS2002上运行不了,据说VS2002(VC7)不完全支持偏特化,VS2003(VC7.1)就支持了. 问题提出: 一,已知类型T,U,在编译阶段如何知道T能否转化成U. template <class T, class U> struct ConversionHelper { static long   Test(...);//WQ注:C++中,不定参数已不需要"至少一个定参"了. static short Test(U);

大道至简 读后有感

大道至简  读后有感 结束大一的课程,自己总结收获,并没有觉得自己在计算机方面有了什么明显的进步,很想在以后的学习里能有所进步,而且这学期又新增了很重要的java课程,所以决定痛下决心,好好学习一番,便想以这<大道至简>作为开篇. 这几天看了本书的第一章,第一章的总体理念为编程的精义,共分为5个小结,即编程的精义,会或不会写程序,程序等于结构加算法,语言以及在没有工程的时代. 在编程的精义这一小节中,开篇便以愚公移山这一寓言故事来类比编程这一项工作,它通过古文中的话来形象的比喻了编程工作中的各

读loki:TYPEList有感一

问题一,简化版的TYPEList,只支持int型 template<int n> class TYPEList { public: int Head; TYPEList<n-1> Tail; }; template<> class TYPEList<0> { public: int Tail; int Head; }; 测试代码 TYPEList<0> l0; l0.Head = 1; l0.Tail = 2; TYPEList<2>

读傅里叶级数有感

老实讲,傅里叶级数还真的挺厉害的.但是,想到这个东西的人很厉害,把它说明白的人也很厉害,唯一不厉害的就是,指定我们教材的那帮人和学这些教材出来自以为他们掌握了这些内容却实际上根本讲不明白的人. 好吧,其实不得已,看到图像可以从时域和频域两个维度找寻特征点的时候,我是蒙蔽的,直到现在不得不面对他的时候.(算了,或许这就是命定论吧...) 以上全是吐槽.如果想读懂傅立叶变换的话,我觉得先看完我这里的一些笔记,然后再去看,人家的文章可能更好.地址:http://blog.jobbole.com/705

读文章有感

最近心情烦躁,自控力下降很多,对自己的行为做不到一定的控制.比以前散漫了很多,读书写字,看新闻都看不进去. 今天就特意找了一些励志的文章读一读.给自己鼓励鼓励,明确一下自己的目标,振奋振奋自己的内心.<成功的老师能影响学生一辈子!> 本文是从一位高中老师的空间转过来的,根据本博理解作了少量修改,请夏老师勿怪!注:原作标题是“励志人物”,敝人改为“成功的老师能影响学生一辈子!”, 欢迎大家予以评论.这位老师,名叫伍军,男性,约三四十岁.中央司法学院毕业,痕迹鉴定专家(侦查指纹等).曾在武汉汉西监

读CopyOnWriteArrayList有感

除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的). 先回顾一下一个常识: 1.JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationException,他们是在虚拟机层面阻塞的,而且速度非常快,几乎不需要CPU时间. 2.JAVA中两个不同的引用指向同一个对象,当第一个引用指向另外一个对象时,第二个引用还将保持原来的对象. 基于

《大道至简》读后有感

这个假期我们的JAVA老师向我们推荐了一本叫做<大道至简>的书并叫我们写一篇读后感,由于我拿到的是TXT文件第一眼看到的它123的页数.与我之前看的书相比明显要少好多.书的开头作者也说了书的好坏不在于字数的多少,看完这本书我深有体会.       文章的开头作者用愚公移山这样一个人尽皆知的故事形象的描述了编程的根本:顺序.分支和循环,移山这样庞大的工程都可以通过简单的编程来实现,这就是编程的精义,也是该书自始至终所强调的重点.而之后作者又更为推崇战国时期李冰在移山过程所表现出来的"偷

《代码大全》读后有感

原本是为了完成软件工程课的作业任务,才打开了这么一本大部头的著作.虽然这一周只读了几章,但是却觉得第一次这样认真的将软件与代码区别开来,也是第一次以工程的角度考虑软件.虽然上了“软件工程”这样的课程,但一来上课不认真,二来课程内容经常纠结于局部问题,所以没有感觉.想来这门课的老师也知道这样的情况,所以第一堂课就说明要我们找些这方面的著作看.然而...还是没能引起我们的重视. 直到上周这个时候,说道要检查博客,才想起这回事.原本想随便找本薄些的书看看,但又想着,要看还是看些经典,于是找到了<代码大

读后有感 - 残忍但诚实的忠告:您没钱,就不要掺和这事了

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 人民日报微信公众号该文原链接 对于此文,本人没有任何感想,处于五感抽搐,三观沉浮的游离状态. 继续学习,希望从中能整理出我学习到的新的认识点,已是