输入输出的优化
在默认情况下,std::cin/std::cout
是极为迟缓的输入/输出方式,而 scanf/printf
比 std::cin/std::cout
快得多。
这是由于c++为了兼容c而做的保守操作
这是因为在默认情况下,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱。由于这个特性,所以导致cin和cout有许多额外的开销。
关闭同步/解除绑定
std::ios::sync_with_stdio(false);
我们可以在进行 IO 操作之前将 stdio 解除绑定,但是在这样做之后要注意不能同时使用 std::cin/std::cout
和 scanf/printf
。更严格的来说:关闭之后C++ IO和C IO 两者不能混用,否则会造成IO混乱。
tie函数加速
std::cin.tie(0); 和 std:cout.tie(0);(0 表示 NULL)
在默认的情况下std::cin 绑定的是 std::cout ,每次执行 << 操作符的时候都要调用 flush(),这样会增加 IO 负担。
tie 是将两个 stream 绑定的函数,空参数的话返回当前的输出流指针。 可以通过std::cin.tie(0) 和std:cout.tie(0)(0 表示 NULL)来解除 std::cin与 std::cout的绑定,进一步加快执行效率。
参考链接:https://blog.csdn.net/hzf0701/article/details/108074798