加快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 <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(false);
}
需要注意 ios::sync_with_stdio(false) 的头文件是iostream,而且添加之后就不要用scanf ,getchar,gets,fgets,fscanf了,其实大数据的话还是建议用scanf。
本篇知识来源于这位大佬 点击这里.

4325

被折叠的 条评论
为什么被折叠?



