scanf和cin
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scanf和cin相关的知识,希望对你有一定的参考价值。
C++中cin和scanf的速度差距有多大 以前做题的时候觉得没什么差距 今天做一个输出10000个数据的题的时候用cin老超时 用scanf一下就过了 谁能给我大概说一下 还有C++中用iostream好还是stdio.h比较好 谢谢了
scanf是格式化输入,printf是格式化输出。cin是输入流,cout是输出流。效率稍低,但书写简便。
格式化输出效率比较高,但是写代码麻烦。
流输出操作效率稍低,但书写简便。
cout之所以效率低,正如一楼所说,是先把要输出的东西存入缓冲区,再输出,导致效率降低。
缓冲区比较抽象,举个例子吧:
曾经就遇到过这样的情况(类似的),
int i;
cout<<'a';
cin>>i;
cout<<'b';
运行结果什么都没看到输出,输入一个整型比如3再按回车后ab同时显示出来了。
但是这样的情况并不是经常发生,是在一些比较大型的工程中偶尔出现,原因是字符a先到了缓冲区,但是没输出,等输入了i,b进入缓冲区后再一并输出的。
流输入也是差不多的。
关于C++中用iostream好还是stdio.h比较好
这个问得的确不好回答了。。
iostream.h和stdio.h是C++的两个头文件,里面是对于一些类,操作符,函数的定义,头文件本身应该没有好坏之分吧~~
只是发展到C++,都比较提倡用iostream.h罢了,因为这样写代码简单。 参考技术A cin的实时性比较差
因为它使用了缓冲区
一般情况下满了才刷新
C++ 一般用iostream
cin和scanf的速度差别
好长时间没有遇到这种问题了,以前虽然知道scanf比cin快,但是没想到快这么多,见图。
50万的数据。
scanf输入:
cin输入:
网上说用std::ios::sync_with_stdio(false);可以优化。优化完的速度:
还和纯scanf差好多。
以上是关于scanf和cin的主要内容,如果未能解决你的问题,请参考以下文章