说实在的,我一直用的是cin和cout。但scanf确实更快(虽然书写麻烦点……)
虽说都是输入,但性质不同。cin是输入流,scanf是格式化输入。
关于为什么scanf更快……
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cout<<"QAQ";
cin>>n;
cout<<"QWQ";
return 0;
}
当运行程序时,只有输入了n,才会输出"QAQ"和"QWQ"。
简单来说,就是只有当执行完所有的cin命令时,程序才会往下运行。所以当数据很多时,cin就显得慢了。
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
printf("QAQ");
scanf("%d",&n);
printf("QWQ");
return 0;
}
当运行程序时,先会输出"QAQ",然后输入n,输出"QWQ"。
简单来说,scanf是输入一个数,执行一下程序。所以当数据很多时(尤其是for循环),scanf就会快很多。举例:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[1005],n; //n<=1000
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sort(a+1,a+1+n); //排序
for(int i=1;i<=n;i++){
printF("%d",a[i]);
}
return 0;
}
这时,写scanf就会更快。
注意事项:
1.比赛时建议写scanf
2.写scanf时注意加取地址符' & ' ,否则会出错
3.注意输入流和格式化输出不要混用
4.输入流的操作符莫要写反