Chapter 17無料公開

C++ 標準入出力の高速化

Ryo Suzuki
Ryo Suzuki
2023.01.09に更新

C++ の標準入出力を高速化する方法の説明です。

  • C 言語の入出力関数(printf(), scanf() など)を使用していない
  • 複数のスレッドから C++ 入出力ストリームを使用していない

以上を満たすプログラムであれば、入出力を行う前に std::cin.tie(0)->sync_with_stdio(0); を呼ぶことで、安全に標準入出力のオーバーヘッドを削減し、プログラムの実行時間を短縮できます。

1. C++ 標準入出力の高速化のテンプレート

#include <iostream>

int main()
{
	std::cin.tie(0)->sync_with_stdio(0);
}
これは次のコードと同じです。
#include <iostream>

int main()
{
	std::cin.tie(nullptr);
	std::ios_base::sync_with_stdio(false);
}