cin加速代码(读入大数据)

cin加速代码

cin和cout属于C++的概念,调用时涉及输入输出流,而scanf和printf属于C的概念,是C语言的标准输入/输出库中的函数,所以在时效上,scanf和printf优于cin、cout,对于大数据的输入输出,通常情况下应该用scanf、printf。

对于普通数据的输入输出,cin和cout比较方便,而在格式化方面,scanf和printf比较容易。cin效率比scanf低很多,尤其输入数据达到20万以上时非常明显,在100万时cin读入就会超时。

cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,什么叫同步呢?就是iostream的缓冲跟stdio的同步。也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销,如何禁用这个特性呢?只需一个语句:ios::sync_with_stdio(false);,这样就可以取消cin于stdin的同步了,该语句放在main内开始位置。

scanf和printf也缺点,cin和cout能够自动识别变量的数据类型,因此,在进行输入输出时,不需要指定数据类型,printf和scanf函数在输入输出时需指定数据类型。

代码示例:

#include 
using namespace std;
int main(){
	ios::sync_with_stdio(false);
}

注:该资料来源于信息学奥赛一本通(C++版)第五版

你可能感兴趣的:(C++)