scanf和cin的差异

Posted 神犇(shenben)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scanf和cin的差异相关的知识,希望对你有一定的参考价值。

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的差异的主要内容,如果未能解决你的问题,请参考以下文章

scanf和cin

scanf()和cin的区别,用scanf,则没有输出数据,为啥?

scanf为啥比cin效率要高?

scanf与cin在啥情况下使用

关于scanf和cin的问题

【重赏】关于cin与scanf的问题