티스토리 뷰
1. endl은 '\n'보다 훨씬 처리속도가 느리다.
2. ios::sync_with_stdio는 c++의 iosteram을 c의 stdio와 동기화 시킨다.
즉 c++ 입출력 연산들이 이에 대응되는 c 스트림 버퍼를 직접 사용한다.
따라서 ios::sync_with_stdio(1) 즉 true로 주면, c++입출력 연산(std::cin, std::cout 등)과 c 입출력 연산을 혼합해 사용할 수 있다.
ios::sync_with_stdio(0) 즉 false 라면 동기화가 끊기고 사용하는 버퍼의 수가 줄어들기 때문에 실행속도가 향상된다.
이때 c++입출력 연산과 c 입출력 연산들을 같이 사용하면 그 입출력 순서들이 보장 되지 않는다.
예를들어
cout << "HI";
printf("BYE");
cout << "hi";
이것이 순서대로 출력되지만, false라면 그 순서가 보장되지 않는다.
따라서 true일때는 c++ 입출력 연산(iostream)인 cin,cout을
c입출력 연산(stdio) 함수인 getchar() 등과 같이 쓰면 안된다.
참고(modoocode.com/281, www.acmicpc.net/board/view/8074,
3. cin.tie(NULL), cout.tie(NULL)
cin을 cout으로부터 untie 한다.
stream을 tie하면 다른 stream에서 입출력요청이 오기전에 stream을 flush 시킨다.
실행속도가 상승한다.
(참고: su-m.tistory.com/7, leeeegun.tistory.com/4)
정리하자면,
1. c함수인 printf, scanf를 사용하고
2. c++ 함수인 cin,cout 등 사용해야 하고, 속도를 더 빠르게 하고 싶다면,
ios::sync_with_stdio(0)
cin.tie(NULL), cout.tie(NULL)
을 사용하되, c함수와 c++함수를 같이 사용하면 안된다.
3. endl 보다는 '\n'을 사용하자
'노트' 카테고리의 다른 글
| clion, 한글 주석시 컴파일 오류 (0) | 2021.04.30 |
|---|---|
| c++) 변수 크기의 배열 선언 (int arr[n]) (0) | 2021.04.29 |
| c++) 문자열 관련 함수들 저장 (0) | 2021.04.02 |
| c++) 배열 초기화, memset vs fiil_n (0) | 2021.04.02 |
| 숫자들 때어서 배열에 저장 (0) | 2021.03.31 |
- Total
- Today
- Yesterday
- recursion
- MVC
- Brute Force
- graph
- db
- 자료구조
- CSS
- Spring
- BFS
- Implementation
- two pointer
- greedy
- back tracking
- 조합
- C++
- Unity
- 이분탐색
- DP
- Kruskal
- Stack
- Tree
- binary search
- permutation
- priority queue
- 재귀
- C
- Dijkstra
- Python
- floyd warshall
- dfs
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
