如何提高标准输入输出流的速度
来源:互联网 发布:武侠小说推荐 知乎 编辑:程序博客网 时间:2024/05/17 09:45
在网上查看别人的ACM代码时,发现别人输入输出语句用的总是scanf与printf,有点不解,还以为他们用的都是C语言,而非C++,但今天做的一道题(Sort):
发现与网上的其他高手使用完全相同的方法,使用scanf及printf的代码提交后Accepted,而使用cin及cout的却Time Limit Exceeded,代码如下:
代码一(Accepted):
- #include<iostream>
- using namespace std;
- bool a[1000001];
- int main()
- {
- int n, m, num, count;
- while(scanf("%d%d",&n,&m)!=EOF){
- memset(a, 0, sizeof(a));
- for(int i=0; i<n; i++){
- scanf("%d",&num);
- a[num + 500000] = 1;
- }
- count = 0;
- for(int j = 1000000; j >= 0; --j){
- if(a[j]){
- if(count == m - 1){
- printf("%d\n",j-500000);
- break;
- }
- printf("%d ",j-500000);
- count++;
- }
- }
- }
- return 0;
- }
代码二(Time Limit Exceeded):
- #include<iostream>
- using namespace std;
- bool a[1000001];
- int main()
- {
- int n, m, num, count;
- while(cin >> n >> m){
- memset(a, 0, sizeof(a));
- for(int i=0; i<n; i++){
- cin >> num;
- a[num + 500000] = 1;
- }
- count = 0;
- for(int j = 1000000; j >= 0; --j){
- if(a[j]){
- if(count == m - 1){
- cout << j - 500000 << endl;
- break;
- }
- cout << j - 500000 << " ";
- count++;
- }
- }
- }
- return 0;
- }
可以看出,代码思路完全一样,只是输入输出方法不同,问过老师,加上这一句代码后使用cin及cout也可以Accepted:
- std::ios::sync_with_stdio(false);
百度了一下,原来而cin,cout之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream的输入输出缓存,可以节省许多时间,使效率与scanf与printf相差无几,还有应注意的是scanf与printf使用的头文件应是stdio.h而不是iostream。
如需转载请注明出处:http://www.clanfei.com/2012/03/235.html
- 如何提高标准输入输出流的速度
- 如何提高电脑的速度
- 如何提高Scrollist的速度
- 6.标准流的输入输出
- c++的标准输入输出流
- 如何提高asp网站的开发速度?
- 如何提高网站访问速度的文章
- 如何提高网站访问速度的文章
- 如何提高截取屏幕的速度?
- 如何提高OpenOffice的启动速度.
- 请问如何提高文件的读写速度
- 如何提高网站访问速度的文章
- 如何提高myeclipse的启动速度
- 如何提高网站的访问速度
- 如何提高网站的访问速度
- 如何提高自己的阅读速度
- 如何提高外部调用Office的速度?
- 如何提高外部调用Office的速度?
- HDU1452-积性函数-素因子分解-乘法逆元
- adb 拨号
- 关于HTML5,了解得很少。
- 安装android samples ApiDemo Re-installation failed due to different application signaures 解决方法
- 二级指针与数组地址的区别与联系
- 如何提高标准输入输出流的速度
- < Unity 3D专栏 >批量操作,界面元素的显示状态
- Oracle 的 ORA-31605 错误解决办法
- 基于XMPP协议的即时聊天工具之发送文件
- POJ 1365 / Central Europe 1997 Prime Land (数论)
- SVN自动安装
- frame里面嵌套的子页面去改变iframe的高度
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- SQL Server 的 SET XACT_ABORT ON | OFF;