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

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

特化函数

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. exp解析

    1 #pragma once 2 #include <string> 3 #include <functional> 4 #include <type_traits> ...

  2. AS上的基础中级控件-图形定制

    图形Drawable 1.Drawable表达包含了图片色块画布背景等 2.存在res中的Drawable目录下,保存描述性的XML文件 3.各种视图都可以使用该控件如ViewText,Button, ...

  3. 5、SpringMVC之域对象共享数据

    5.1.域对象简介 请求域(request):一次请求范围内有效 会话域(session):一次会话范围内有效 应用域(application):整个应用范围内有效 5.2.环境搭建 5.2.1.右击 ...

  4. 【JavaWeb】 接口鉴权

    一年前写过一篇,叫Webservice校验机制,叫法不太对,就是接口鉴权 https://www.cnblogs.com/mindzone/p/15078436.html 这东西就是说,你提供给外部的 ...

  5. 很好用的python游戏环境(续2):强化学习算法走迷宫游戏环境(导航问题 navigation):分享一个python语言的迷宫游戏环境

    相关前文: 很好用的python游戏环境(续):强化学习算法走迷宫游戏环境(导航问题 navigation):分享一个python语言的迷宫游戏环境 项目的GitHub地址: https://gith ...

  6. 使用浪潮AI计算平台之分布式计算(Tensorflow框架下 PS/Worker模式下的异步计算)

    虽然Tensorflow一直都是支持分布式计算的,但是由于只有一台电脑,一个GPU,所以别说分布式的tensorflow的使用了,就是单机多卡都是没有使用过的,由于后来可以有机会使用这个浪潮的AI计算 ...

  7. mindspore-gpu-2.2.0版本学习笔记

    docker镜像拉取: docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-cuda11.6:2.2.0   使用 ...

  8. 说说"铁马冰河"事件

    地址: https://baike.baidu.com/item/%E9%93%81%E9%A9%AC%E5%86%B0%E6%B2%B3/60313943?fr=aladdin 其实也没有什么好说的 ...

  9. Inno Setup 寻找 AppId 的方法

    背景 有时候打包后,会遗失AppId.这样会导致下一次打包时没办法和之前统一.为了避免这个问题,所以最好是打包时记下来,可以根据注册表去查 解决办法 可以根据任意查找注册表的工具,我这里使用 Regi ...

  10. WPF Button自定义样式收集 带有图片的Button

    此篇只是收集平时写过的样式~ 带有图片的Button 为Button设定了一些附加属性,用于添加图片到Button. 比如初始化图片和点击后的图片 public static readonly Dep ...