c++快读思路及代码+整活慢读1.0

本文探讨了C++中cin输入速度慢的问题,提出了使用getchar函数实现的快读方法,并分享了一段快读代码。同时,作者以幽默的方式介绍了“慢读1.0”,通过结合scanf、四则运算、位运算、vector与普通数组、快速幂与pow函数、long long与int的比较,展示了相对较慢的读入方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知,c++自带读入函数cin的速度非常慢,尤其是读入数字时。

而c自带读入函数scanf相对来说就要快一点,但在读取多个大数时还是会显得慢。

这个时候就需要我们手写读入函数了(简称快读)


快读思路:运用较快的读取字符函数getchar将数字读入再进行处理还原。

代码:

long long in(){
	char c = getchar();
	long long x = 0, f = 1;
	for (; c < '0' || c > '9'; c = getchar())
		if (c == '-') f = -1;
	for (; c >= '0' && c <= '9'; c = getchar())
		x = (x << 1) + (x << 3) + (c ^ 48);
	return x * f;
}

int x=in();long long y=in();

long long in(long long &x){
	char c = getchar();
	int f = 1;
	for (; c < '0' || c > '9'; c = getchar())
		if (c == '-') f = -1;
	for (; c >= '0' && c <= '9'; c = getchar())
		x = (x << 1) + (x << 3) + (c ^ 48);
	x*=f;
}

int x;in(x);long long y;in(y);

一般的OI竞赛中,这种快读就够用了,还有更加高深的读入(如fread)我就不一一赘述了(因为我也不会)


正经内容说完了,接下来就是大家期待的整活内容啦。

  1. 首先,scanf的读入速度比getchar慢,这是毋庸置疑的。
  2. 四则运算比位运算慢,这也是毋庸置疑的。
  3. ve
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值