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을 수동으로 플러시해야 합니다.
함께 또는 별도로?
동시 C 및 C 명령
ios_base::sync_with_stdio(false); 설정된 경우 C 스타일(예: scanf)과 C 스타일(예: cout) 명령을 혼합하면 문제가 발생할 수 있습니다. 이는 C I/O 함수가 동기화된 스트림을 기대하기 때문인데, sync_with_stdio(false)를 설정한 후에는 그렇지 않을 수도 있습니다.
CodeChef 예제
제공되는 CodeChef 솔루션에서, sync_with_stdio(true)와 함께 scanf/printf를 사용하면 scanf가 동기화된 스트림을 예상하기 때문에 오류가 발생할 수 있습니다. ios_base::sync_with_stdio(false);.
위 내용은 최적의 C I/O 성능을 위해 `ios_base::sync_with_stdio(false);` 및 `cin.tie(NULL);`을 함께 사용해야 합니까, 아니면 별도로 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!