`
oldrev
  • 浏览: 230735 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

抛砖:TypeTuple 的简单算法

阅读更多
D语言的 TypeTuple既然可以按数组的方式操作,我觉得应该可以对其增加更多的算法,下面的 RemoveIf就是一个例子:

 1 module dust.meta.tuple;
2
3 import std.typetuple;
4
5
6 template RemoveIf(alias PredTempl, TList...)
7 {
8 static if (TList.length == 0)
9 alias TList RemoveIf;
10 else static if (PredTempl!(TList[0]))
11 alias RemoveIf!(Size, TList[1 .. length]) RemoveIf;
12 else
13 alias TypeTuple!(TList[0], RemoveIf!(Size, TList[1 .. length])) RemoveIf;
14 }
15
16 template Foreach(alias PredTempl, TList...)
17 {
18 static if(TList.length == 0)
19 alias TList Foreach;
20 else
21 {
22 private alias PredTempl!(TList[0]) Dummy_;
23 alias Foreach!(PredTempl, TList[1 .. length]) Foreach;
24 }
25 }
26
27
28 template Size(T)
29 {
30 const bool Size = T.sizeof == char.sizeof;
31 }
32
33 template Print(T)
34 {
35 const int Print = 0;
36 pragma(msg, T.stringof);
37 }
38
39 void main()
40 {
41 alias TypeTuple!(int, long, char) T;
42 alias RemoveIf!(Size, T) T2;
43 alias Foreach!(Print, T2) forEach;
44
45 }

这个RemoveIf模板的效果几乎和C++ STL 中的 remove_if 一样,提供一个谓词:PredTempl,RemoveIf最终得到处理后的TypeTuple。类似还可以实现 sort,unique等等算法,方便 TypeTuple的使用。
分享到:
评论

相关推荐

    抛砖引路单片机----

    1.前言 2.硬件平台建立 3.软件平台建立 4.ISP下载线的制作与使用

    【抛砖篇】acer4736z笔记本拆机教程

    详细介绍了acer4736z的拆机步骤,方便的大家自己动手清理灰尘,了解本本的结构。

    毕业论文-基于Delphi开发的c语言学习系统设计与实现

    2) 经典例题管理:收录了一些经典编程实例,并作了详细注释,给同学们起到抛砖 引玉的作用,使用户了解编程算法,并提高用户阅读程序的能力。 3) 章节试题管理:用户可以通过此模块测试自己,了解自己的不足,起到查...

    Monkey黑白棋 (C#源代码)

    发源代码的目的是抛砖引玉(小弟我抛砖,有玉的尽量砸过来)。AI算法是通用的,并不局限于某种棋,你可以取其精华去其糟粕,少走很多不必要的弯路。 源码也方便了那些一心只想搞算法而不想花心思在界面上...

    传智播客扫地僧视频讲义源码

    10_类模板语法_数据类型和算法的分离_抛砖 11_单个类模板基本语法 12_类模板_派生_普通类语法 13_类模板_派生_类模板语法 14_中午知识点梳理 15_复数类_所有函数都写在类的内部 16_复数类_所有函数都写在类的外部_上...

    关于sql注入的简要演示(入坑抛砖)

    主要介绍了关于sql注入的简要演示(入坑抛砖),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    《临界区的互斥控制》配套VC源代码

    所以那我就写了这么一个例子,以望对学习多线程编程起到引玉抛砖的作用。有个易懂的例子学起来总是容易很多。近来我正在复习那几个排序算法,于是就把这些算法写到了这里来作为线程的例子。同时也对几个通用的排序...

    PHP简洁函数小结

    PHP简洁函数 主题:类菌体PHP简洁函数 简述:PHP简单明了函数语法 适合人群:对开源社区感兴趣,对php感兴趣,有一点时间了解下php 备注:希望大家抛砖,仍蛋,呵呵 1、与mysql相关 mysql_connect 建立一个与MySQL...

    使用matlab做的简单网络爬虫-DataRetrieval.m

    代码如下,仅作交流使用,期望起到抛砖迎玉的效果,matlab其强大功能需要我们一起发觉。:D urlread获取的源文件貌似不支持中文字符,不知道怎么解决,求交流解决办法。 % 本程序用于获取网站中的表格 % written ...

    Java实战篇:设计自己的Annotation

    Annotation在java的世界正铺天盖地展开,有空写这一篇简单的annotations的文章,算是关于Annotation入门的文章吧,希望能各位们能抛砖,共同学习......

    浅谈QA所应该具备的知识

    在中国目前的中小软件企业,...另外,由于笔者资历尚浅,既没有丰富的经验与知识体系,也没有大师级的天分,写这些真是诚慌诚恐,权当笔者在这里抛砖吧,希望引出更多的玉来,我相信,您就是一块玉,希望聆听您的指正。

    SuperSocket_WebSocket_WebSocket4Net服务器需要的DLL

    基于SuperSocket的服务器 和 客户端程序 所需要的DLL 服务器端<控制台Console程序> (.Net4.0)需要引用 ...本人菜鸟一枚,抛砖引入,欢迎一起来研究这个Socket开发框架 QQ:2360450496 SuperSocket官方QQ群373076764

    和电脑聊天

    希望补充数据文档,让他更能交流,代码过于简单,希望抛砖引钰

    纯c语言实现多任务程序

    纯c语言实现的一个多任务小程序,标准C语言编写,模拟多任务运行的状态,可以移植到任意平台,代码写的很简单,适合C初学者,只是抛砖,作为启发只用,高端C开发人员可以忽略,不喜勿喷

    Web服务完整实例构建Web通道(Web服务端) 简单、规范、易学、易用

    示例只是一个示范,还存有很多缺陷,如:口令没有加密、输入页面没有美化、网页之间调用没有安全机制……等等,正如前文所言,笔者抛砖,网友引玉,有待大家完善! 笔者目前取得的小小成绩,得益于很多前辈的书籍、...

    Kivy-Display:基于Kivy的文物图片三维模型触屏展示软件

    借鉴的另一个人的代码,我这里抛砖引。 这个项目是要连接数据库,获取并展示文物信息,那么就让单独一个database.py文件获取到后,一直保留着就可以了。咱也不知道数据量有多大,炸了再说。 那没数据库也不是跑不了...

    SelectorDemo.7z

    Moba等游戏中,需要进行框选物体,但是如果地面不平整,用常规的BOX就无法制作...贴花还有很多用途,比如制作技能范围展示等等,这里只是抛砖引用。文章链接:https://blog.csdn.net/sdhexu/article/details/114289843

    【新】一个部分支持Unicode的精易模块-易语言

    背景: 精易模块可以全面支持一下unicode嘛? 对此,我便基于:精易模块[v8.4.0] ,进行了部分命令Unicode化。(内部大部分源码来自易语言Unicode...对于更多命令,我无心去Unicode化了,该代码权当是抛砖迎玉罢了。

    贪吃蛇(微信小程序游戏).rar

    微信小程序游戏源代码:贪吃蛇 学习小程序开发的同学可以下载学习,抛砖迎玉, 请使用微信最新版开发工具打开运行

    WinForm右下角提示框源码

    WinForm右下角提示框源码,很简单的一段代码,只是抛砖,让有些找不着头绪的人得到一点提醒

Global site tag (gtag.js) - Google Analytics