scanf和cin的差异
2016-05-22 16:15
211 查看
scanf和cin的差异
引例:http://www.cnblogs.com/shenben/p/5516996.html大家都知道,在C++中有两种输入、输出方式—scanf和cin,但是,它们之间存在的差异,你们知道么?下面请看测评吧!
测试题目:
输入n个数,输出n个数。
测试环境:
ubuntu12.04 i3CPU
4G内存 7200转硬盘
测试结果:
测试结果使用linux的time测试时间,结果如下:
10000组数据时:
![](http://img.my.csdn.net/uploads/201210/24/1351050986_6327.png)
real代表程序执行总时间,user代表用户输入数据的时间,sys代表系统时间
从上面的测试结果中,貌似没有发现scanf的厉害之处甚至好像还慢些(数据存在波动性),那我们接着往下看:
100000组数据时:
![](http://img.my.csdn.net/uploads/201210/24/1351051245_4001.jpg)
这时scanf已经开始崭露头角了,不过差异还不是很大,咱们接着往下看!
1000000组数据时:
![](http://img.my.csdn.net/uploads/201210/24/1351051440_5678.jpg)
这时候大家可以发现,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; }
更快的我还没学会。。。
相关文章推荐
- Linux内核模块
- 求一元二次方程的解
- CoreOS 835.12.0 稳定版安装
- android异步初级
- Android适配文件夹的创建
- 计算机硬件构成
- Nodejs Error: EMFILE
- STM32F429i-Discovery 移植并成功跑起来u-boot 2016.05
- [疯狂Java]基础类库:BigDecimal(精确实数)
- [POJ2663]Tri Tiling(dp)
- 浙大2016上机考研题
- css text-indent:999em
- c#打印技术
- 三级联动 案例
- 动态规划:最长子序列问题
- SERVLETJSP学习(九)—— EL、JSTL
- map与vector---Email Aliases
- ssl例五
- 使用.net实现邮件发送
- Java 数据结构之数组的操作一:初级