输入输出的优化

在默认情况下,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

posted @ 2022-03-08 20:19  深情的山鸡  阅读(103)  评论(0编辑  收藏  举报