일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- network
- Data Structure
- 그레이들
- db
- DP
- Graph
- LeetCode
- react
- git
- Python
- DFS
- 알고리즘
- Algorithm
- 자바
- vscode
- VIM
- BFS
- Redux
- java
- frontend
- 안드로이드
- Database
- 동적 계획법
- 백준
- 프로그래머스
- Javascript
- CS
- 리트코드
- 다이나믹 프로그래밍
- TypeScript
Archives
- Today
- Total
늘 겸손하게
ios_base::sync_with_stdio(false); cin.tie(NULL); 읽기, 쓰기 속도 증가 본문
Programming/C & C++
ios_base::sync_with_stdio(false); cin.tie(NULL); 읽기, 쓰기 속도 증가
besforyou999 2021. 8. 10. 12:02
알고리즘 문제는 시간제한이 있다. 그러므로 어떻게든 빠르게 문제를 해결하는 것이 중요하다.
읽고 쓰는 속도를 조금이라도 빠르게 하도록 아래의 코드를 사용하자.
1
2
3
|
ios_base::sync_with_stdio(false);
cin.tie(NULL);
|
cs |
그런데 정확히 위의 두 코드가 어떤 일을 하는걸까?
엄밀히 말해 프로그램 실행 속도를 증가시키는 코드는 아니다. 부차적인 효과로 실행 시간이 짧아지는것.
그냥 맹목적으로 코드에 추가하기보다는 정확히 어떤 일을 하는 코드인지 알고 사용하자.
1. ios_base::sync_with_stdio(false)
C와 C++ 사이 동기화를 비활성화시킵니다. 모든 standard stream은 C와 C++ 스타일의 I/O를 섞어 사용해도 원하는 결과를 얻을 수 있도록 default로 동기화 상태입니다. 이 동기화를 비활성화시키면 C++ stream은 자신만의 고유한 버퍼를 가지게 되고 C와 C++ 스타일의 I/O를 섞어 사용하는 것은 모험이 됩니다. (결과가 예측 불가능해집니다)
요약 : C와 C++ 사이 동기화를 비활성화시킵니다. C 와 C++ 스타일의 I/O를 섞어 사용하는 것의 결과가 예측 불가능해짐
2. cin.tie(NULL)
cout과 cin 사이의 묶음을 해제합니다(untie). 묶인 스트림은 상대 스트림에서 I/O가 발생하기 전에 자동으로 자기 스트림을 flush합니다. 그러므로 cin과 cout 사이의 묶음을 해제하면 반드시 cin으로 input을 받기 전 cout의 버퍼를 수동으로 flush 해주어야 합니다.
요약 : cout과 cin 사이의 묶음을 해제. cin으로 입력받기 전 반드시 수동으로 cout flush.
'Programming > C & C++' 카테고리의 다른 글
이차원 배열 동적할당 ( C / C++ ) (0) | 2021.07.16 |
---|---|
Swap macro(스왑 매크로)/C,C++ (0) | 2021.01.30 |