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) 를 사용해서 그 동작을 생략토록 한다.

블로그 이미지

Sunullo

겸손함이란, 숙이는게 아니라 확실하게 준비하는 것 분수를 아는 것

,