在不打开每行的情况下读取整数文件的最有效方法是什么? 我有一个文件,每行只有整数,即:num.txt
100
231
312
...
在我的程序中,我使用while循环来读取它;
int input = 0;
while(cin >> input)
{
// Assignment
}
我使用time a.out <num.txt
在Linux中读取它
事实证明,读取 1亿数字需要大约15秒(用户时间)。所以我想知道有没有更好的方法来缩短用户时间?
提前谢谢!
答案 0 :(得分:4)
int input = 0;
ios_base::sync_with_stdio(false);
//Add this statement and see the magic!
while(cin >> input)
{
// Assignment
}
要使其超快(不推荐用于作业!),请使用getchar_unlocked()
:
int read_int() {
char c = getchar_unlocked();
while(c<'0' || c>'9') c = gc();
int ret = 0;
while(c>='0' && c<='9') {
ret = 10 * ret + c - 48;
c = getchar_unlocked();
}
return ret;
}
int input = 0;
while((input = read_int()) != EOF)
{
// Assignment
}
Vaughn Cato的answer解释得很漂亮。