본문 바로가기
C++ 코딩 정리/코딩 팁

c++ ios::sync_with_stdio(false), cin.tie(NULL)은 무엇인가.

by $# 2020. 3. 20.

고수들의 C++ 소스코드를 보면 항상 다음과 같은 코드가 써져있다.

 

ios::sync_with_stdio(false);
cin.tie(NULL);

먼저, 첫번째 줄을 보자.

 

ios::sync_with_stdio(false);

c++을 할 때 c 표준 스트림과 c++ 표준 스트림은 동기화 되어있다고 한다.

그렇기에 우리는 cin도 쓸 수있고 scanf도 쓸 수있는 것이다.

하지만, 뭐든 많으면 느려지는 법.

고수들은 두 가지 동기화로 인한 시간 초과를 막기 위해 한가지를 끊고 cin, cout만 쓰기 위해 위와 같은 코드를 쓴다고 한다.


다음으로 두번째 줄을 보자.

 

cin.tie(NULL);

 

cin을 cout로부터 untie 한다고 한다. (stack overflow에 뭐라고 적혀있는 데 더 공부해봐야겠다.)

 


결론

cin과 cout를 이용하는 사람이라면 위 두 줄의 코드를 쓰지 않고는 시간 초과가 뜨는 문제가 종종 있을 것이다.

만약에 위 코드를 외우고 싶지 않다면 printf와 scanf를 열심히 써주면 될 거같다.

댓글