C++을 익히려 문제를 풀다가
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 이라는 문장을 접했다.
왜 쓰는 걸까?
대충 짐작해보면 C++의 입출력과 관계있는 거 같다.
C++을 처음 배울 때 왜 C에서 사용하는 #include <stdio.h>, scanf, printf 대신에
#inlcude <iostream>, cin, cout, <<, >>연산자를 사용하는 지 이해가 안됐다.
C++은 iostream이라는 표준 입출력 라이브러리를 통해 cout, cin, <<연산자 정의를 포함한다.
또한 using namespace std;를 적어줌으로써 std 이름 공간에 선언된 모든 이름에 std::를 생략할 수 있는 것
내 수준에서 간단하게 간단하게 정리해보자면,
ios_base::sync_with_stdio(false);
특징 : c와 c++의 I/0 sream을 분리시키는 역할, C와 C++의 입출력 버퍼는 독립적인 버퍼를 가지게 된다.
단점 : C의 입출력 객체와 혼용해서 사용하면 안됨
장점 : 사용하는 버퍼의 수가 줄어 cout cin의 속도를 향상시킴
cin.tie(NULL) / cout.tie(NULL)
cin과 cout의 묶음을 풀어준다. 입출력이 반복되는 경우는 이런 묶음을 풀어주어야 한다.
참고>
cout, cin 최적화 방법과 주의점 :: 코오오오딩 (tistory.com)
C++ 입출력 속도와 ios_base::syn.. : 네이버블로그 (naver.com)
[C++] 입출력 함수(cout, cin) 속도 개선 / ios_base::sync_with_stdio(false); cin.tie(null); (tistory.com)
'C&C++' 카테고리의 다른 글
생성자는 왜 가상함수로 쓰지 않는가? (0) | 2022.12.14 |
---|---|
2차원 배열을 인수로 넘기는 방법 (0) | 2022.10.26 |
C++ STL sort함수로 배열, 벡터 정렬하기 (0) | 2022.09.23 |
헷갈리는 함수와 연산자 malloc, length, strlen, sizeof, size (0) | 2022.08.17 |
EOF가 무엇인가? (0) | 2022.08.12 |