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

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

特化函数

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

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

2

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

3

图论建边

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

代码

#include<bits/stdc++.h>
using namespace std;
template<typename T>
inline void read(T& x){
x=0;bool sym=0;char c=getchar();
while(!isdigit(c)){sym^=(c=='-');c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
if(sym)x=-x;
}
template<size_t N>
inline void read(char (&str)[N]){
size_t n=0;char c=getchar();
while(n<N-1&&!isspace(c)){str[n]=c;c=getchar();++n;}
str[n]=0;
}
template<typename T,size_t N>
inline void read(T (&a)[N],int range=N){
for(int i=1;i<=range-1;++i){read(a[i]);}
}
template<typename T,typename... Args>
inline void read(T& x,Args&... args){
read(x);read(args...);
}
template<typename T,typename T2>
inline void readarray(T& x,T2& args){
read(x);read(args,x);
}
template<typename func,typename... Args>
inline void readact(int x,function<func>fu,Args&... args){
for(int i=1;i<=x;++i){
read(args...);
fu(args...);
}
}

cpp.json

	{
"Template":{
"prefix": "fastread",
"body":[
"#define endl '\\n'",
"template<typename T>",
"inline void read(T& x){",
" x=0;bool sym=0;char c=getchar();",
" while(!isdigit(c)){sym^=(c=='-');c=getchar();}",
" while(isdigit(c)){x=x*10+c-48;c=getchar();}",
" if(sym)x=-x;",
"}",
"template<size_t N>",
"inline void read(char (&str)[N]){",
" size_t n=0;char c=getchar();",
" while(n<N-1&&!isspace(c)){str[n]=c;c=getchar();++n;}",
" str[n]=0;",
"}",
"template<typename T,size_t N>",
" inline void read(T (&a)[N],int range=N){",
" for(int i=1;i<=range-1;++i){read(a[i]);}",
"}",
"template<typename T,typename... Args>",
" inline void read(T& x,Args&... args){",
" read(x);read(args...);",
"}",
"template<typename T,typename T2>",
"inline void readarray(T& x,T2& args){",
" read(x);read(args,x);",
"}",
"template<typename func,typename... Args>",
"inline void readact(int x,function<func>fu,Args&... args){",
" for(int i=1;i<=x;++i){",
" read(args...);",
" fu(args...);",
" }",
"}"
]
}
}
// Place your snippets for cpp here. Each snippet is defined under a snippet name and has a prefix, body and
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
// same ids are connected.
// Example:
// "Print to console": {
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }

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. 「比赛记录」CF Round 954 (Div. 3)

    Codeforces Round 954 (Div. 3) 题目列表: A. X Axis B. Matrix Stabilization C. Update Queries D. Mathemati ...

  2. RHCA rh442 005 (NICE FIFO RR) 资源强占与分配 cpuset

    cgroup 容器 控制服务访问 limits 控制用户 进程管理 [root@servera ~]# ps -aux | more USER PID %CPU %MEM VSZ RSS TTY ST ...

  3. RHCA rh442 003 系统资源 查看硬件 tuned调优

    监控工具 zabbix 监控具体业务,列如数据库.触发式事件(断网 硬盘坏一个) 普罗米修斯 给容器做监控 管理人员,如何知道几千台服务器哪些出了问题,这得需要zabbix 系统硬件资源 cpu [r ...

  4. 【爬虫】Java爬取省市县行政区域统计数据

    前言 网上看了好几个Python爬虫来爬取省市县行政区域统计 官网除了省市县以外,还有区,街道,居委村委层级 https://zhuanlan.zhihu.com/p/512852193 所以自己用J ...

  5. 【JS】05 DOM 文档对象模型 P2 元素的CRUD、Dom集合对象

    Element & Node 元素,或者称为节点 在JS中创建一个HTML元素,但是因为没有指定在Dom对象中的节点位置,所以页面不会发生改变 var para = document.crea ...

  6. 创绘-AI一键小说转漫画视频

    创绘-AI一键小说转漫画视频 创绘简介 一键智能AI推理提示词,自动关联上下文,画面匹配度更高 一键批量绘图,同时支持本地和云端模式(没有显卡也能畅享绘图) 一键导出剪映草稿,自动生成关键帧,快速图文 ...

  7. A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式(续)

    前文: A* 算法.PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式 上篇讲了些关于地图文件 .map 的介绍,本文主要 ...

  8. python运行报错:ImportError: libcudnn_cnn_infer.so.8: cannot open shared object file

    运行报错: 解决方法: conda install cudatoolkit==11.8.0 python3 -m pip install nvidia-cudnn-cu11==8.7.0.84 成功解 ...

  9. ubuntu desktop改用无桌面方式启动

    事情是这样的,平时需要使用Ubuntu系统跑一下深度学习的AI代码,但是有时候就会十分的尴尬的遇到显存差几百兆不够的时候,这时候就能看到显卡上正好有这部分显存被Ubuntu的可视化界面的desktop ...

  10. 二分答案&前缀和&差分&离散化(简记)

    二分答案 基本code int Find(int l,int r) { int ans,mid; while(l<=r) { int mid=l+r>>1; if(Check(mid ...