昨天梦到一种快读,你给他传多少参,他就读多少数

今天学了折叠表达式和隐式转换,现在来把这玩意实现一下

特化函数

void read(int) 读入一个整数

void read(char&[],range=size_t) 按数组大小读入一个字符串

void readarray(T x,T2&[]) 先读入一个整数 \(x\),再读入 \(x\) 个数字,传入数组

一般函数

void read(...Args) 读入若干变量. 仅限于整数类型,数组或字符串

void readact(int,function<>,...Args) 第一个参数为执行次数,为第三个参数及以后的全部参数执行读入,再传入第二个参数内执行.

使用例

读入下列数据:

1

  1. 5
  2. 1 2 3 4 5
  1. int n,a[6];
  2. readarray(n,a);

2

  1. 1 3 5
  1. int u,v,w;
  2. read(u,v,w);
  1. int a[4];
  2. read(a,3);

3

图论建边

  1. 4 3
  2. 1 2
  3. 2 3
  4. 3 4
  1. read(n,m)
  2. for(int i=1;i<=m;++i){
  3. read(u,v,w);add(u,v,w);
  4. }
  1. function<auto> r=add;
  2. read(n,m);readact(m,r,u,v,w);

代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. template<typename T>
  4. inline void read(T& x){
  5. x=0;bool sym=0;char c=getchar();
  6. while(!isdigit(c)){sym^=(c=='-');c=getchar();}
  7. while(isdigit(c)){x=x*10+c-48;c=getchar();}
  8. if(sym)x=-x;
  9. }
  10. template<size_t N>
  11. inline void read(char (&str)[N]){
  12. size_t n=0;char c=getchar();
  13. while(n<N-1&&!isspace(c)){str[n]=c;c=getchar();++n;}
  14. str[n]=0;
  15. }
  16. template<typename T,size_t N>
  17. inline void read(T (&a)[N],int range=N){
  18. for(int i=1;i<=range-1;++i){read(a[i]);}
  19. }
  20. template<typename T,typename... Args>
  21. inline void read(T& x,Args&... args){
  22. read(x);read(args...);
  23. }
  24. template<typename T,typename T2>
  25. inline void readarray(T& x,T2& args){
  26. read(x);read(args,x);
  27. }
  28. template<typename func,typename... Args>
  29. inline void readact(int x,function<func>fu,Args&... args){
  30. for(int i=1;i<=x;++i){
  31. read(args...);
  32. fu(args...);
  33. }
  34. }

cpp.json

  1. {
  2. "Template":{
  3. "prefix": "fastread",
  4. "body":[
  5. "#define endl '\\n'",
  6. "template<typename T>",
  7. "inline void read(T& x){",
  8. " x=0;bool sym=0;char c=getchar();",
  9. " while(!isdigit(c)){sym^=(c=='-');c=getchar();}",
  10. " while(isdigit(c)){x=x*10+c-48;c=getchar();}",
  11. " if(sym)x=-x;",
  12. "}",
  13. "template<size_t N>",
  14. "inline void read(char (&str)[N]){",
  15. " size_t n=0;char c=getchar();",
  16. " while(n<N-1&&!isspace(c)){str[n]=c;c=getchar();++n;}",
  17. " str[n]=0;",
  18. "}",
  19. "template<typename T,size_t N>",
  20. " inline void read(T (&a)[N],int range=N){",
  21. " for(int i=1;i<=range-1;++i){read(a[i]);}",
  22. "}",
  23. "template<typename T,typename... Args>",
  24. " inline void read(T& x,Args&... args){",
  25. " read(x);read(args...);",
  26. "}",
  27. "template<typename T,typename T2>",
  28. "inline void readarray(T& x,T2& args){",
  29. " read(x);read(args,x);",
  30. "}",
  31. "template<typename func,typename... Args>",
  32. "inline void readact(int x,function<func>fu,Args&... args){",
  33. " for(int i=1;i<=x;++i){",
  34. " read(args...);",
  35. " fu(args...);",
  36. " }",
  37. "}"
  38. ]
  39. }
  40. }
  41. // Place your snippets for cpp here. Each snippet is defined under a snippet name and has a prefix, body and
  42. // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
  43. // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
  44. // same ids are connected.
  45. // Example:
  46. // "Print to console": {
  47. // "prefix": "log",
  48. // "body": [
  49. // "console.log('$1');",
  50. // "$2"
  51. // ],
  52. // "description": "Log output to console"
  53. // }

template fastread的更多相关文章

  1. 为.NET Core项目定义Item Template

    作为这个星球上最强大的IDE,Visual Studio不仅仅提供了很多原生的特性,更重要的是它是一个可定制的IDE,比如自定义Project Template和Item Template就是一个非常 ...

  2. jQuery.template.js 简单使用

    之前看了一篇文章<我们为什么要尝试前后端分离>,深有同感,并有了下面的评论: 我最近也和前端同事在讨论这个问题,比如有时候前端写好页面给后端了,然后后端把这些页面拆分成很多的 views, ...

  3. 2000条你应知的WPF小姿势 基础篇<69-73 WPF Freeze机制和Template>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...

  4. tornado template

    若果使用Tornado进行web开发可能会用到模板功能,页面继承,嵌套... 多页应用模板的处理多半依赖后端(SPA就可以动态加载局部视图),就算是RESTfull的API设计,也不妨碍同时提供部分模 ...

  5. 设计模式(九): 从醋溜土豆丝和清炒苦瓜中来学习"模板方法模式"(Template Method Pattern)

    今天是五.四青年节,祝大家节日快乐.看着今天这标题就有食欲,夏天到了,醋溜土豆丝和清炒苦瓜适合夏天吃,好吃不上火.这两道菜大部分人都应该吃过,特别是醋溜土豆丝,作为“鲁菜”的代表作之一更是为大众所熟知 ...

  6. C++泛型编程:template模板

    泛型编程就是以独立于任何特定类型的方式编写代码,而模板是C++泛型编程的基础. 所谓template,是针对“一个或多个尚未明确的类型”所编写的函数或类. 使用template时,可以显示的或隐示的将 ...

  7. 新手入门Underscore.js 中文(template)

    Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了javaScript的编程.MVC框架Backbone.js就将这个库作为自 ...

  8. knockoutjs如何动态加载外部的file作为component中的template数据源

    玩过knockoutjs的都知道,有一个强大的功能叫做component,而这个component有个牛逼的地方就是拥有自己的viewmodel和template, 比如下面这样: ko.compon ...

  9. JavaScript模板引擎artTemplate.js——template.helper()方法

    上一篇文章我们已经讲到了helper()方法,但是上面的例子只是一个参数的写法,如果是多个参数,写法就另有区别了. <div id="user_info"></d ...

  10. linux下, 再次遇到使用thinkphp的模板标签时,报错used undefined function \Think\Template\simplexml_load_string() 是因为没有安装 php-xml包

    linux下, 使用thinkphp的模板标签,如 eq, gt, volist defined, present , empty等 标签时, 报错: used undefined function ...

随机推荐

  1. 绝对要收藏!!! JavaEE开发常用注解

    目录 前言 1.Mybatis常用注解 2.SpringMVC常用注解 3.Spring常用注解 1. IoC注解 2. DI注解 3. 事务注解 4.SpringBoot常用注解 5.Lombok注 ...

  2. 国内的开源AI模型共享网站(AI模型的GitHub)—— mindscope —— 使用git lfs方式下载模型文件

    参考前文: 国内的开源AI模型共享网站(AI模型的GitHub)-- mindscope -- 对标外网的"huggingface",mindscope好用吗? 使用git lfs ...

  3. 【转载】 【Java分享客栈】我曾经的两个Java老师一个找不到工作了一个被迫转行了

      本文作者: 福隆苑居士 本文链接: https://www.cnblogs.com/fulongyuanjushi/p/16182465.html 版权声明: 本博客所有文章除特别声明外,均采用 ...

  4. 清除 Nuxt 数据缓存:clearNuxtData

    title: 清除 Nuxt 数据缓存:clearNuxtData date: 2024/8/6 updated: 2024/8/6 author: cmdragon excerpt: 摘要:本文详细 ...

  5. 讲师招募 | Apache DolphinScheduler Meetup诚邀您共建开源!

    随着Apache DolphinScheduler在全球范围内的快速发展,我们的用户群体和社区活动也在不断扩大. 为了进一步丰富我们的社区内容,分享更多有价值的知识和经验,我们诚挚地邀请您加入我们,成 ...

  6. 再探GraphRAG:如何提升LLM总结能力?

    作者:王振亚 编者语: 自微软发布GraphRAG之后,相关解读文层出不穷,其中不乏优秀的内容.比如前段时间转载薛明同学的<微软GraphRAG框架源码解读>让大家快速对GraphRAG的 ...

  7. 【全】CSS动画大全之其他【移动盒子显示详情】

    效果预览 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  8. Fiddler远程调试js

    使用Fiddler调试本地js 在我们前端开发的日常工作中,发现服务器上某个css/javascript文件有问题,需要修改,那真是家常便饭.通常,我们需要将文件进行修改,然后重新发布再验证,这样就很 ...

  9. Prometheus部署以及问题解决

    Prometheus作用: Prometheus监控(Prometheus Monitoring)是一种开源的系统监控和警报工具.它最初由SoundCloud开发并于2012年发布,并在2016年加入 ...

  10. GC终结标记 SuspendEE 是怎么回事

    一:背景 1. 讲故事 写这篇是起源于训练营里有位朋友提到了一个问题,在 !t -special 输出中有一个 SuspendEE 字样,这个字样在 coreclr 中怎么弄的?输出如下: 0:000 ...