.
mmapmmapmmap真的是黑科技,用了之后时间减半
但是输出还是只能靠writewritewrite,不知道为什么用mmapmmapmmap会RERERE
应该算是一个比较好的快速读写模板了吧,到时候再把输出也换成mmapmmapmmap
(以下代码均在LinuxLinuxLinux环境下编译,windowswindowswindows的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);
}
本文介绍了一种使用mmap进行快速文件读写的技巧,通过内存映射文件,读写速度可以提升一倍。然而,输出操作仍依赖于write函数,存在RE问题。文章提供了一个在Linux环境下实现的代码示例,展示了如何使用mmap进行高效的数据读取。
9318

被折叠的 条评论
为什么被折叠?



