C++的输入输出与C的输入输出比较

在acm写题时会发现,很多人在读取题目数据的时候都用scanf,输出时用printf.因为c的输入数出效率高得多,程序运行时间会快很多。甚至有些题用cin,cout解题会tle,换成scanf和printf就过了。看过大神用随机数测试过scanf和cin的效率,最大可能相差十倍。那么为什么备受欢迎的c++会比c的慢很多呢?

c++为了保持c原有的特性,默认情况下cin与stdio保持同步,也就是iostream的缓冲与stdio同步,c++的输入输出能和c的输入输出同时用。正因为这个同步特性,cin与stdin同步进行,cin有了许多额外开销,cout也是如此。但是热衷于用c++输入输出流的就可以用这段代码取消输入输出流的同步特性:

ios_base::sync_with_stdio(false);
注意使用这行代码后就不能用c的scanf和printf了。然后测试后cin和scanf的效率相差无几。

猜你喜欢

转载自blog.csdn.net/codedz/article/details/79299436