scanf/printf랑 달리
cin/cout 은 ios::sync_with_stdio(0), cin.tie(0) 이라는 두 명령을 실행시켜야 함
이걸 안해두면 입출력의 양이 많을 때 시간초과가 발생할 수 있음
평소 Cstream과 C++stream이 동기화 되어 있기 때문에
cin/cout만 쓸거면 동기화를 끊는 ios::sync_with_stdio(0)로 명령을 내리는 것
but, visual studio2017/2019 등에서는 무조건 동기화를 유지하고 있어서
sync_with_stdio(0)를 무시함
하지만 보통의 채점 서버는 gcc를 사용하므로 분명히 차이가 있다함
해서 위의 명령어를 입력했다면
printf 와 cout등을 같이 쓰면 안된다 함
cin.tie(0)는 버퍼 관련 명령어이다
보통 우리가 입력을 하면 바로바로 화면에 출력되는거 같겠지만,
입력한 것의 일정량을 출력 버퍼 라는 곳에 일정량씩 담아뒀다가
콘솔화면에 옮겨주는 것
입력 버퍼 말고도, 출력 버퍼가 있는데
입력과 출력을 번갈아가면서 쓸 때
콘솔창 안에서 순서가 꼬이는 것을 방지하기 위해
cin 명령을 수행하기 전에 cout버퍼를 비워준다.
근데 온라인 저지 사이트에서는 출력 결과만 보므로 이 동작이 필요 없다.
cin.tie(0) 또는 cin.tie(nullptr) 를 사용해서 그 동작을 생략토록 한다.
'coding test > 바킹독' 카테고리의 다른 글
코테공부 09.27 (0) | 2021.09.27 |
---|---|
전체를 특정값으로 초기화할 때 쓰는 방법 (0) | 2021.09.17 |
endl은 쓰지 안도록 한다. (0) | 2021.09.14 |
cin/cout 이 scanf/printf 보다 유리한 점 (0) | 2021.09.12 |
STL을 함수 인자로 넘길 때 주의해야되는 점 (0) | 2021.09.12 |