输入输出
c++有两大输入输出方式,也就是分为流输入输出和格式化输入输出
SCANF,PRINTF:
优点:
格式化输入输出,输入输出的速度比流输入输出更快
支持c语言,不需要标准名字空间
输入字符串比较方便
缺点:
使用较不方便(相对于用惯了流输入输出方式来说)
使用时要指明数字类型
cin,cout:
优点:
使用时不用指明数字类型,较为方便
缺点:
默认为流输入输出,速度慢速度慢速度慢重要的事情说三遍!
不容易处理夹杂在数据中的字符串、
那么,有没有什么方式可以挽救cin,cout的速度?
答案是有
在代码前输入以下命令:ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
算法(c++):快读
输入速度
getchar(输入字符)>scanf(格式化输入)>cin(流输入)
快读的模板:
int quickRead(){
int a = 0, f = 1;
char c = getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while(c >= '0' && c <= '9'){
a = a*10 + c-'0';
c = getchar();
}
return a*f;
}
scanf函数具有返回值,扫描到一个指定的值返回1,扫描的两个返回2,什么都没有扫描到返回-1,对-1取反,得到0,这就是while(~scanf(“。。。”,。。。))的原理
评论