`
oldrev
  • 浏览: 233799 次
  • 性别: 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的使用。
分享到:
评论

相关推荐

    抛砖引路单片机----

    《抛砖引路单片机》是一本针对初学者的单片机学习指南,旨在引领读者逐步走进单片机的世界。书中的内容分为四个主要部分,涵盖了从理论基础到实践操作的各个环节,对于想要深入了解单片机技术的人来说,无疑是一份...

    factoryio2.5工厂流水线仿真程序,期末专周可用,多个场景可以咨询 使用简单的梯形图与SCL语言编写,通俗易懂,起到抛砖

    使用简单的梯形图与SCL语言编写,通俗易懂,起到抛砖引玉的作用,比较适合有动手能力的入门初学者。 软件环境: 1、西门子编程软件:TIA Portal V15(博图V15) 2、FactoryIO 2.4.0 内容清单: 1、FactoryIO中文说明...

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

    Acer4736z是一款笔记本电脑,这篇文章主要讲述了如何拆卸该型号的笔记本电脑。文章首先提醒读者,拆卸笔记本电脑前需要准备好必要的工具,包括各种尺寸的十字螺丝刀和一字螺丝刀,以及用于清理灰尘的导热硅脂等。...

    WMS系统操作手册

    3. 操作流程演示:在WMS系统中,用户可以按照以下步骤进行主生产计划编辑、审核及抛砖操作:首先,用户需要编辑主生产计划,然后审核计划,最后抛砖计划。 ### 主生产计划变更功能 主生产计划变更功能允许用户对已...

    Monkey黑白棋 (C#源代码)

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

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

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

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

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

    PHP简洁函数小结

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

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

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

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

    本文将通过一个简单的示例来解释SQL注入的工作原理和演示如何利用它。 首先,我们需要理解SQL的基本概念。SQL,全称Structured Query Language,即结构化查询语言,是用于管理和操作关系型数据库的标准语言。当我们...

    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

    抛砖引玉的近义词及意思精选.doc

    近义词如“抛砖引美”,也有类似的含义。 文档中列出了一系列的近义词,这些词汇对于学习汉语和提升语言表达能力非常有帮助。例如: - **茂盛—茂密**:这两个词都形容植物生长繁茂,但“茂盛”多用于形容生命力...

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

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

    【工程文档】-砌砖工程安全技术交底记录表.doc

    4. **传砖与物品投掷**:禁止向上抛砖或物体,人力传递砖块时,架子要稳固,人员位置错开,防止砖块掉落砸伤。严禁向下扔灰斗或物件,以防伤人。 5. **脚手架搭建与使用**:脚手架要求平稳牢固,桥枋搭接良好,避免...

    USBoot 2.11

    对于把XP装进U盘或移动硬盘一直是个让人感兴趣的话题,对于要经常使用几台...发此帖的目的是为了让更多的人了解"USBOOT",希望能起到个抛砖的作用。至于这个系统可以用来干嘛?自己可以思考。下面先看看做好的系统:

    易语言超文本浏览框和程序交互源码

    利用超文本浏览框的即将跳转事件作为中转,就可以获得从网页上点击后要跳转的地址,这个地址将作为exe要执行什么操作的指令...本例程只做抛砖之用,高手飘过。。。。。。@易语言源码分享站。Tags:易语言超文本浏览框。

Global site tag (gtag.js) - Google Analytics