[C++] ios::sync_with_stdio cin.tie cout.tie

ios_base::sync_with_stdio

함수 원형
ios_base::sync_with_stdio(bool sync);
return : 함수 호출하기 전 동기화 상태

sync : true인 경우
기본 설정으로 표준 stream들이 동기화 되어 있음
C++ 표준 stream을 C 표준 stream과 동기화 시킴
아래에 참고 ref> https://www.cplusplus.com/

C++ 표준 stream과 C 표준 stream이 동기화 되어 있는 경우
iostream operation과 stdio operation을 혼용하여 사용해도 됨
C++ 표준 stream operation이 자신들의 버퍼를 사용하지 않고 C stdio 버퍼를 직접 사용한다는 의미 ref> http://cppreference.com/

C++표준 stream과 C 표준 stream이 동기화 되어 있지 않은 경우
iostream operation과 stdio operation을 혼용하여 사용할 경우 순서를 보장하지 못함
동기화 하지 않는 경우 입출력 연산 속도는 개선됨

cin.tie, cout.tie

cin과 cout이 묶여 있는 것을 풀어줌

//사용
cin.tie(nullptr);
cout.tie(nullptr);

cin과 cout이 묶여 있는 경우 각각 operatoin이 동작하기 전에 stream이 flush됨 -> 속도상 좋지 않음
flush된다는 것은 buffer 상에 데이터를 비우면서 동작시킨다는 것을 의미

cin과 cout이 묶여 있는 것을 풀어줌으로써 stream flush 횟수를 줄임
flush 횟수가 줄며 묶여 있는 것을 풀어준다는 것은 각각 operation 순서를 보장하지 못한다는 것을 의미

좋은 웹페이지 즐겨찾기