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(“。。。”,。。。))的原理