ios_base::sync_with_stdio(false); 的重要性; cin.tie(NULL);
这两条语句在 C 程序中具有重要意义,尽管它们可能不会直接提高性能。
ios_base::sync_with_stdio(false) ;
禁用 C 和 C 标准流之间的同步。这允许 C 流拥有独立的缓冲区,从而可能导致更高效的 I/O 操作。但是,在混合 C 和 C I/O 时,它可能会导致意外行为。
cin.tie(NULL);
从 cout 中解开 cin。默认情况下,绑定流可确保一个流在对另一个流进行操作之前刷新。禁用此功能可确保 cin 操作不会等待 cout 被刷新,从而减少 I/O 延迟。但是,它在显示信息时需要手动刷新 cout。
Together 还是 Separate?
同时使用 C 和 C 命令
当 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);.
以上是我应该同时使用 `ios_base::sync_with_stdio(false);` 和 `cin.tie(NULL);` 以获得最佳 C I/O 性能吗?的详细内容。更多信息请关注PHP中文网其他相关文章!