C++中有一个函数:getchar() ,用于读入字符,那么这跟读入整数有什么关系呢?
其实,经过类似高精度的处理,就可以实现类型转换啦!
下面是正负数读入优化模板:
#include<cctype> inline int read() { int X=0,w=0; char ch=0; while(!isdigit(ch)) {w|=ch==‘-‘;ch=getchar();} while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X; }
isdigit(x)isdigit(x) 表示 xx 是否是 0 ~ 9 的整数 ,是则返回 truetrue ,不是则是 falsefalse 。
注意要用 cctypecctype 头文件。
像这样“XXX=read()”使用函数即可,效率超高!
这里补充一个正负实数的读入优化:
inline double dbread() { double X=0,Y=1.0; int w=0; char ch=0; while(!isdigit(ch)) {w|=ch==‘-‘;ch=getchar();} while(isdigit(ch)) X=X*10+(ch^48),ch=getchar(); ch=getchar();//读入小数点 while(isdigit(ch)) X+=(Y/=10)*(ch^48),ch=getchar(); return w?-X:X; }
原文:https://www.cnblogs.com/zzrblogs/p/10402895.html