令string加速输入的策略
#include <bits/stdc++.h>
using namespace std;
string s;
char a[100007];
string read(){
scanf("%s",a);
string p = "";
for (int len = strlen(a),i = 0;i < len;i ++){
p += a[i];
}
return p;
}
int main()
{
string p = read();
cout << p << endl;
}
进行测试时发现了一个有趣的现象,
直接用cin输入string的速度为100;
使用read函数进行转换速度为10;
但是使用ios加速后的速度为5;
// 输入文件
#include <bits/stdc++.h>
using namespace std;
int main()
{
//自动创建一个out的txt文件,向其中输入
freopen("out.txt","w",stdout);
for (int i = 1;i <= 1e7;i ++)cout << "a";
cout << endl;
}
// 测试文件
#include <bits/stdc++.h>
using namespace std;
string s;
char a[10000007];
string read(){
scanf("%s",a);
string p = "";
for (int len = strlen(a),i = 0;i < len;i ++){
p += a[i];
}
return p;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
//记录时间,读入
freopen("out.txt","r",stdin);
double tim = clock();
string p;
// 1.用read来输入
//p = read();
// 2.用cin来输入
cin >> p;
//cout << p << endl;
cout << clock()-tim << endl;
}
/*这次我发现了一个不得了的事情。用了加速的cin后,比read()这个函数的输入还要快*/