超级读入&输出优化

.
m m a p mmap mmap真的是黑科技,用了之后时间减半
但是输出还是只能靠 w r i t e write write,不知道为什么用 m m a p mmap mmap R E RE RE
应该算是一个比较好的快速读写模板了吧,到时候再把输出也换成 m m a p mmap mmap
(以下代码均在 L i n u x Linux Linux环境下编译, w i n d o w s windows windows g + + g++ g++不行)

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<algorithm>
#include<sys/mman.h>
using namespace std;
struct buf{
	char*s;
	buf():s((char*)mmap(0,150000010,PROT_READ,MAP_PRIVATE,fileno(stdin),0)){}
	operator int(){
		int x=0,y=0;
		while(*s<48) ++s;
		while(*s>32) x=x*10+*s++-48;
		return x;	
	}
}it;
struct ouf{
	char*s,*t,*r,*l;
	ouf():s((char*)malloc(500000000)),r((char*)malloc(20)),t(s){}
	~ouf(){ write(1,s,t-s);	}
	inline void operator()(int x){
		if(!x) *t++=48;
		else{
			for(l=r;x;x/=10) *++l=x%10|48;
			for(;l!=r;*t++=*l--);
		}
		*t++='\n';
	}
} ot;
int main(){
	ot(it+it);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值