读入优化是个很实用的东西,很简单,代码很短,但是它能让你的程序输入数据比scanf和cin(尤其是cin)快了不知道多少倍。

我们怎么实现它呢?

思想:scanf和cin都支持各种类型的输入,所以它需要判断我们需要输入什么类型的变量,很慢。我们如果只需要输入数字,就可以写读入优化。用getchar()一个一个读入字符,如果这是个数字就把它接在我们保存返回值的变量中。

有两种版本:

版本1:

版本2:

两种版本不同之处就是版本二定义了一个类型,支持各种类型(如int,long long,unsigned long long...)的输入,不用因为类型改变而改代码。而版本一只支持int型输入,如果要读入别的类型得改代码。
而且版本二短一点~╮(╯_╰)╭

总之……自己选吧。

代码所需要的头文件:

cctype里包含了isdigit函数,参数为1个char型变量,返回一个布尔值,为true表示这是个数字('0'到'9'),为false表示这不是个数字。

如果需要读入负数,那就加个特殊判断就行了,比读入非负数的速度慢一点,但是肯定比scanf和cin快了几条街。

可以读负数的读入优化: