cin,cout很常用,但他们速度比较慢
有些时候刷题时TLE了,一心想优化循环,没想到最后查出是他俩拖了后腿🤬
所以如何加快呢?
1.取消缓冲区同步语句 std::ios::sync_with_stdio(false)
C++中cin,cout效率比较低,是因为先把要输出的东西存入缓冲区与C语言中的stdio同步后,再输出,导致效率降低,而这个语句的作用是取消缓冲区同步,直接使用,由此可节省时间,使效率与scanf与printf相差无几。但需要注意的一点是,因为取消与stdio的同步之后,就不建议再使用 printf 与 scanf了,否则实际输出效率可能还会与预期不符。只能用cin 与 cout,以使得cout和cin的效率得到提高
2.使用tie函数减少IO负担
在默认的情况下 std::cin 绑定的是 std::cout,每次执行 << 操作符的时候都要调用 flush() 来清理缓冲区(stream buffer),这样会增加 IO 负担。可以通过这句代码std::cin.tie(0)来解除 std::cin 与 std::cout 的绑定,进一步加快执行效率。
这样效率就会和scanf,printf差不多了