1. ios::sync_with_stdio(false);
ios::sync_with_stdio는 cpp의 iostream을 c의 stdio와 동기화시켜주는 역할을 합니다. 여기서 iostream, stdio의 버퍼를 모두 사용하기 때문에 딜레이가 발생하게 됩니다. ios::sync_with_stdio(false)는 이 동기화 부분을 끊는 함수입니다. 이를 사용하면 c++만의 독립적인 버퍼를 생성하게 되고 c의 버퍼들과는 병행하여 사용할 수 없게 됩니다. 대신 사용하는 버퍼의 수가 줄어들었기 때문에 속도는 높아지게 됩니다.
2. cin.tie(NULL);
디폴트는 cout,cin이 tie되어 있습니다.
만약 코드에서
cout << "hi"; cin >> name;
이 순서라면 디폴트의 경우 "hi"가 먼저 출력되고 name을 입력할 것입니다.
그러나 untie의 경우엔 cout으로부터 cin을 untie해주기 때문에 먼저 입력부터 하게 됩니다.
그러나 "hi"는 보이지 않는데, cout은 디폴트에선 출력명령을 내리거나 버퍼가 가득찼을 경우에만 flushed되고 출력되기 때문입니다.
따라서 cin을 cout에서 untie하고 싶다면 cin으로 입력하기 전에 cout으로 출력을 할 때마다 지속적으로 flush를 해줘야 합니다. 그래야 cout을 하고 cin을 하고 싶을 때 그 순서대로 프로그램이 실행될 겁니다.
백준 15552번 푸는데 2번을 활용함!
(C++) - cout,cin 실행 속도 높이기(시간초과 해결법)
🍳머리말 문제를 푸실 때 printf, scanf를 사용했을 때 A/C를 받았지만 cout, cin을 사용했을 때 시간초과가 나는 경우가 있습니다. 이에 대한 이유와 해결방법을 설명한 글입니다. 📕 왜? 이는 cout
codecollector.tistory.com
'Language > C++' 카테고리의 다른 글
비쥬얼 스튜디오 오류 해결: lnt-arithmetic-overflow (0) | 2023.05.07 |
---|---|
c++ 포인터 기초 (0) | 2022.01.31 |
c++ wntdll.pdb 오류 해결하기 - 기호 서버 체크 (0) | 2021.11.07 |