ios_base::sync_with_stdio(false)
: c의 sdio와 c++의 iostream의 동기화를 비활성화 한다.
평소에는 서로 동기화 상태이다. 즉, c++에서 c와 c++ 각각의 스타일로 입출력을 받아도 서로 동기화해 우리가 입력/출력하고자 하는 순서대로 결과를 얻을 수 있다. 이는 c와 c++이 동일한 버퍼를 공유하기 때문이다.
하지만 위 코드를 사용하면, 동기화를 비활성화하고, c++ 스타일 코드만 사용할 때, 기존 동기화 과정에서 필요하던 시간이 절약되어 입출력속도가 빨라지는 효과가 있다. 즉, 시간을 절약할 수 있다.
다만, 비동기화 하였으므로 c 의 입출력 (scanf, printf, getchar)을 사용할 경우 오류가 발생한다.
cin.tie(null)
: 입력과 출력의 연결을 끊어준다. ( cin.tie(nullptr) 또는 cin.tie(0) 도 가능)
기존에는 cout 과 cin 입출력이 묶여있다. 입력요청이 들어오면 그 전에 출력 작업이 있었을 경우(출력 버퍼에 내용이 있는 경우), 버퍼를 비워(flush) 출력하게 된다.
- 이 경우, 입출력이 반복될때, 버퍼를 지우느라 시간이 오래 걸린다.
- 입출력의 연결을 끊어주면, 입출력 순서를 보장받을 수 없다.
endl 대신 "\n"
endl는 개행 뿐아니라 출력 버퍼를 비우는 (flush) 역할도 한다.
따라서, cin.tie(null) 을 사용했더라도, endl를 사용하면 입력과 출력의 연결이 끊어진 효과를 보지 못하게 된다.
'전공 > 알고리즘(algorithm)' 카테고리의 다른 글
[C++] 백준(BOJ) 2941 크로아티아 알파벳 (2) | 2024.01.04 |
---|---|
[C++] 백준(BOJ) 1157 단어공부 (1) | 2024.01.04 |
[C++] 백준(BOJ) 10988 팰린드롬인지 확인하기 (1) | 2024.01.02 |
[C++] 문자열 string vs char array 차이 비교 (0) | 2024.01.02 |
[C++] 백준(BOJ) 5597 과제 안 내신 분..? (0) | 2024.01.02 |