输入输出优化

输入输出优化

  • 众所周知,cin,cout读取速度很慢的,主要是因为C++为了兼容C,需要让cin和stdin、cout和stdout数据流进行同步,也就是说两种方法可以混用,不必担心文件指针混乱,因为这样的兼容性导致额外的开销,可以通过sync_with_stdio();来禁用同步来加速,但是用了这句话后一定不能使用scanf以及printf
ios::sync_with_stdio(false);  //取消cin 与 scanf()同步 (不推荐使用)  
cin.tie(0); // 解除cin和cout的绑定
  • 同时endl速度慢于\n,因为使用了endl之后,会对缓冲区执行清空操作,这个过程会先执行’\n’,再执行flush操作,所以不推荐使用endl
  • 大数据的情况下,需要进行输入输出优化
  • 由于putchar以及getchar速度块。所以主要是采用putchar以及getchar来进行优化
//模板(只能用于整数)
template <typename T> inline void read(T &x) {
	char c; x = 0; bool flag = 0;
	c = getchar();
	while(c > '9' || c < '0') {if(c == '-')flag = 1; c = getchar();}
	while(c <= '9' &&  c >= '0') {x = x*10+c-48; c = getchar();}
	if(flag) x = x*(-1);
} 
template <typename T> inline void write(T x) {
	if(x<0) putchar('-'), x = -x;
	if(x >= 10) write(x/10);
	putchar(x%10+'0');
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值