백준 문제 풀 때마다 C로 짰는데 이제 도저히 귀찮아서 못하겠다. 특히 string 처리가 제일 귀찮다.
scanf, printf만 쓰다가 cin, cout을 쓰니 자바 만큼은 아니지만 속도가 확연히 느리다. 그 이유는 cin, cout이 stdio buffer와 싱크를 맞추기 때문. 싱크를 해제하면 입출력이 굉장히 빨라진다.
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
ios_base::sync_with_stdio(false)
는 C 입출력 함수와 C++ 입출력 스트림의 동기화를 해제하는 것. 이걸 쓰면 C, C++ 입출력 함수를 섞어 쓰면 안된다.
그 다음 cin.tie(nullptr)
, cout.tie(nullptr)
은 입출력 스트림 사이 untie 하는 것. 자세한 설명은 요기로
+ 그리고 줄 나눌 때 std::endl
대신 '\n'을 사용하는 게 더 빠르다. endl은 출력 버퍼를 비우기 때문에 느리다.
반응형
'프로그래밍 > C++' 카테고리의 다른 글
C++ std::pair 정렬방법 (0) | 2020.04.15 |
---|---|
C++ std::accumulate 간단 사용법 및 주의사항 (3) | 2020.04.14 |
cstdio와 stdio.h의 차이 (0) | 2019.05.04 |
C++ 점과 점 사이의 거리 (0) | 2019.05.04 |
bits/stdc++.h 파일 내용 (0) | 2019.02.12 |