ios_base::sync_with_stdio(false); の重要性cin.tie(NULL);
C プログラムのこれら 2 つのステートメントは、パフォーマンスを直接向上させるわけではありませんが、重大な影響を及ぼします。
ios_base::sync_with_stdio(false) ;
C と C 標準ストリーム間の同期を無効にします。これにより、C ストリームが独立したバッファを持つことが可能になり、より効率的な I/O 操作が可能になる可能性があります。ただし、C と C I/O を混在させると、予期しない動作が発生する可能性があります。
cin.tie(NULL);
cin を cout から切り離します。デフォルトでは、結合されたストリームにより、一方のストリームがもう一方のストリームでの操作の前にフラッシュされます。これを無効にすると、cin 操作は cout がフラッシュされるのを待たなくなり、I/O 待ち時間が短縮されます。ただし、情報を表示するときに cout を手動でフラッシュする必要があります。
Together or Separate?
C と C コマンドの同時実行
When ios_base::sync_with_stdio(false);が設定されている場合、C スタイル (scanf など) と C スタイル (cout など) コマンドを混在させると問題が発生する可能性があります。これは、C I/O 関数が同期ストリームを期待しているためですが、sync_with_stdio(false) を設定した後はそうではない可能性があります。
CodeChef の例
提供されている CodeChef ソリューションでは、 scanf/printf を sync_with_stdio(true) とともに使用すると、scanf が予期しているため、エラーが発生する可能性があります。同期ストリーム。 ios_base::sync_with_stdio(false); により無効になります。
以上がC I/O パフォーマンスを最適化するには、`ios_base::sync_with_stdio(false);` と `cin.tie(NULL);` を一緒に使用する必要がありますか、それとも別々に使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。