일반적으로 c++의 cin,cout는 printf,scanf의 속도에 비해 현저히 떨어진다.
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는 사용할 수 없다.