码迷,mamicode.com
首页 > 其他好文 > 详细

scanf和cin的差异

时间:2016-05-22 16:54:16      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

scanf和cin的差异

引例:http://www.cnblogs.com/shenben/p/5516996.html

大家都知道,在C++中有两种输入、输出方式—scanf和cin,但是,它们之间存在的差异,你们知道么?下面请看测评吧!
 
测试题目:
输入n个数,输出n个数。
 
测试环境:
ubuntu12.04 i3CPU 4G内存 7200转硬盘
 
测试结果:
测试结果使用linux的time测试时间,结果如下:
 
10000组数据时:
技术分享
real代表程序执行总时间,user代表用户输入数据的时间,sys代表系统时间
从上面的测试结果中,貌似没有发现scanf的厉害之处甚至好像还慢些(数据存在波动性),那我们接着往下看:
 
100000组数据时:
技术分享
这时scanf已经开始崭露头角了,不过差异还不是很大,咱们接着往下看!
 
1000000组数据时:
技术分享
 
这时候大家可以发现,cin所用的时间是scanf的两倍还多!!
后面就不继续往下测的,对这个感兴趣或者想自己验证的童鞋可以继续。。。。不过据说scanf的输入速度是cin的3倍多!!
 
测试总结:
从以上测试结果,大家可以发现scanf和cin的巨大差异了吧!那么,这个东西最主要在哪应用呢?不用说都能想到,当然是ACM平台啦!那些算法没问题时间超限的童鞋,你们说不定就是因为用了cin导致的呢!
 
再大的数据范围就要
#include<cstdio>
#include<iostream>
using namespace std;
#define ll long long//自定数据范围 
inline ll read(){
    register ll f=1,x=0;
    register char ch=getchar();
    while(ch>9||ch<0){if(ch==-) f=-1;ch=getchar();}
    while(ch>=0&&ch<=9) {x=x*10+ch-0;ch=getchar();}
    return x*f;
}
int main()
{
    ll n=read();
    printf("%lld\n",n);
    return 0;
}

更快的我还没学会。。。

scanf和cin的差异

标签:

原文地址:http://www.cnblogs.com/shenben/p/5517029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!