고수들의 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를 열심히 써주면 될 거같다.
'C++ 코딩 정리 > 코딩 팁' 카테고리의 다른 글
[C++ STL] pair 에서 make_pair 대체 (0) | 2020.03.22 |
---|---|
신기) 변수 초기화 후 초기화 한 변수로 for문 돌릴 시 기존 값 유지 (0) | 2020.03.20 |
댓글