蒟蒻问一个问题:c++用scanf输入1e6个数会超1s吗?

学术版

@[tuliwei](/user/35090) 你数据小的时候用快读?比cin还慢,自己上图灵姬做做题目吧,提高升学考试
by 闪电皮卡丘 @ 2020-05-24 09:19:00


@[闪电皮卡丘](/user/224112) 你加了fread吗
by tuliwei @ 2020-05-24 09:28:37


@[tuliwei](/user/35090) 这。。。
by 闪电皮卡丘 @ 2020-05-24 09:30:28


数据小推荐这个: ```cpp struct { inline operator int () { int x;return scanf("%d", &x), x; } } read; ```
by tuliwei @ 2020-05-24 09:34:58


稍微试验一下,debug下面会超,release不会 0到intmax的数据生成: ```cpp std::mt19937_64 engine(std::random_device{}()); std::uniform_int_distribution dis(0, std::numeric_limits<int>::max()); int main() { std::freopen("out.txt", "w", stdout); for(std::size_t i = 0; i < static_cast<std::size_t>(1E6); ++i) std::cout << dis(engine) << std:: endl; } ``` ```cpp #include <cstdio> #include <array> #include <chrono> #include <iostream> #include <random> #include <limits> std::array<int, static_cast<std::size_t>(1E6)> arr; int main() { std::freopen("out.txt", "r", stdin); auto t0 = std::chrono::high_resolution_clock::now(); for(auto& i : arr) { std::scanf("%d", &i); } auto t1 = std::chrono::high_resolution_clock::now(); std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(t1 - t0).count(); } ``` 输出: ``` Debug : 1265 Release : 241 ```
by constructor @ 2020-05-24 09:38:33


上一页 |