g226medi03   1년 전

method2 가 method1 보다 빠를 거라고 생각했었는데
method1 이 method2 보다 훨씬 빠르네요
이유가 뭔지 잘 모르겠습니다
미리 감사드립니다

zihasoo   1년 전

기본적으로 c++에서 cin과 cout은 tie되어 있습니다. 즉 입력과 출력이 동기화 되어 있기 때문에

cout << "hello";

cin >> a;

와 같은 코드를 실행할 시 출력을 먼저 하고 입력을 받게 됩니다. 이 동기화 때문에 cin에서 입력을 받게 되면 cout은 버퍼를 비워야 합니다. 문제는 버퍼를 비우는 작업은 매우 느리고, tie를 끊지 않은 상태에서 위의 method2() 처럼 입출력을 번갈아서 하게 되면 매번 버퍼를 비우므로 엄청나게 느려지게 되는 것입니다.

다행히도 c++은 이 tie에 대한 설정을 할 수 있는 함수를 제공합니다. cout.tie() , cin.tie() 가 그 함수인데, 인자로 NULL을 넣어주게 되면 아무 스트림과도 tie를 하지 않겠다는 의미가 되어 cin과 cout은 서로에게 영향을 주지 않고 빠르게 작동할 수 있습니다. 자세한 건 

https://velog.io/@d2h10s/c-ios...

를 참고하세요

댓글을 작성하려면 로그인해야 합니다.