Study/C++

ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 쓰는 이유

coldtruthk 2024. 3. 5. 13:44
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

 

▶대게 main의 첫번째 줄에 작성한다.

 

ios::sync_with_stdio(false);

 

▶ C의 stdio와 C++의 iostream 의 동기화를 비활성화한다. (평소엔 동기화 상태)

 

기본적으로 C++와 C의 표준 스트림은 동기화되어 있다. (동일한 버퍼를 공유한다.)

 

그러므로 이를 통해 동기화를 끊으면 C++표준 스트림이 독립적으로 IO버퍼링을 하게 되어 많은 양의 입출력이 있을 경우 성능이 많이 좋아진다.

 

	cin.tie(NULL);
	cout.tie(NULL);

 : 입력과 출력 연결을 끊어준다.

cout와 cin, 입출력은 원래 묶여있는데, 이 경우, 입출력이 반복될 때, 일일이 버퍼를 지우느라 시간이 오래 걸린다. 따라서, 이를 통해 입출력 묶음을 풀면 시간이 단축된다.