하루하루 꾸준히, 인생은 되는대로

카테고리 없음

C++ cin, cout 최적화

긤효중 2022. 3. 9. 23:22

일반적으로 c++의 cin,cout는 printf,scanf의 속도에 비해 현저히 떨어진다.

 

https://cupjoo.tistory.com/97

 

C/C++ 입출력 속도 비교

우리는 C에서 C++로 넘어갈 때 cin과 cout라는 새로운 입출력 방식을 배우게 된다. scanf와 printf와 달리 매번 변수형을 직접 명시해줄 필요도 없어서 굉장히 편하다. 하지만 BOJ 1874 스택 수열 문제

cupjoo.tistory.com

C와 C++에서 입력 함수별 10,000,000개의 숫자를 비교했을 떄 

scanf->0.798초

cin -> 2.051초가 걸린다.

 

이 과정에서 알고리즘 문제를 풀떄 맞은 코드도 cin을 써서 틀리는 경우가 발생한다.

 

이를 해결하려면 사실 scanf를 쓰는게 가장 좋다.

그치만 cin을 계속 사용하길 원한다면 다음의 방법을 사용하는게 좋다.

 

 ios_base :: sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

이 코드를 main함수 안에 넣고 사용하면 된다.

 

ios_base는 c++에서 사용하는 iostream의 cin,cout등을 함축한다.

sync_with_stdio(false)는 c언어의 <stdio.h>와 동기화하지만, 그 안에서 사용하는 printf, scanf, getchar, fgets 등은 false로 동기화하지않음을 뜻한다.

 

위의 코드를 넣고 scanf나 printf는 사용할 수 없다.