再很多的競賽代碼中,為了加快C++的輸入顽悼,經(jīng)常為加入以下代碼
std::ios::sync_with_stdio(false);
std::cin.tie(0);
第一句取消stdin和cin的同步锣咒,可以加快cin的速度
第二句取消了cin 于 cout的綁定,默認(rèn)情況下芦岂,cin的時候會讓cout的緩沖flush瘪弓。
但是經(jīng)過我在VS2019的測試發(fā)現(xiàn)這兩句優(yōu)化代碼垫蛆,并沒有太大作用禽最,而且cin 似乎比scanf要快腺怯。
以下是測試代碼:
C語言寫文件:
int writeFileC() {
FILE* f = fopen("data.txt", "w");
for (int i = 0; i < 100000000; ++i) {
fprintf(f, "%d", rand());
}
return 0;
}
C語言讀文件:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int readFileC() {
int start = clock();
FILE* f = freopen("data.txt", "r", stdin);
for (int i = 0; i < 100000000; ++i) {
int t;
scanf("%d", &t);
}
printf("%.3lf\n", double(clock() - start) / CLOCKS_PER_SEC);
return 0;
}
C++讀文件:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int readFileCPP() {
int start = clock();
FILE* f = freopen("data.txt", "r", stdin);
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
for (int i = 0; i < 100000000; ++i) {
int t;
std::cin >> t;
}
printf("%.3lf\n", double(clock() - start) / CLOCKS_PER_SEC);
return 0;
}