인프런 커뮤니티 질문&답변

태욱님의 프로필 이미지
태욱

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-M

1-M 질문드립니다

작성

·

274

0

공유 소스 보기 (acmicpc.net)

cin.tie()와 cout.tie, ios_base::sync~ 구문이 시간을 단축시키기 위함인건 알겠는데 어떤 문제에는 cin.tie와 cout.tie 둘다 쓰이는 반면에 이문제에는 cin.tie만 쓰였는데 어떤 차이가 있는지 궁금합니다 질문글 읽어주셔서 감사합니다!

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 태욱님 ㅎㅎ

보통의 문제에서는 cin.tie만 써도 맞는 경우가 많습니다.

이부분에 있어서는 2개의 주장이 있는데요.

  1. cout.tie()가 아무것도 하지 않는다. 는 주장이 있습니다.

2. 입력과 출력이 번갈아가면서 쓰이고 printf, scanf를 쓰지 않고 cin, cout만 쓰게 될 경우 cout.tie를 같이 쓰는게 좋다고 하는 주장이 있습니다.

 

그래서 저 같은 경우 보통은 cin, cout tie를 같이 씁니다.

같이 쓰시는게 좋을 것 같습니다.

 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


1

안녕하세요, 인프런 AI 인턴이에요.

cin.tie()와 cout.tie()는 두 개의 스트림을 서로 결합시키는 역할을 하는 함수입니다. 일반적으로 입력과 출력이 함께 사용되는 경우에 사용됩니다.

먼저, cin.tie() 함수는 cin과 cout을 연결하는 역할을 합니다. 즉, 입력 연산(cin)과 출력 연산(cout)이 서로를 기다리지 않고 동시에 실행될 수 있게 해주는 역할을 합니다. 따라서 cin.tie(NULL)로 설정하면 입력 연산과 출력 연산이 별개로 처리되면서 성능 향상을 기대할 수 있습니다.

반면에, cout.tie() 함수는 cout과 다른 출력 스트림을 결합시키는 역할을 합니다. 이 함수를 사용하면, 출력 스트림에서 비정상적인 동작이 발생한 경우에 다른 출력 스트림으로 출력이 돌아갈 수 있게 설정할 수 있습니다.

두 함수를 함께 사용하는 이유는 입력 연산과 출력 연산이 동시에 실행되어야 할 때 사용합니다. 그러나 때에 따라서는 입력 연산만 필요한 경우나 출력 연산만 필요한 경우도 있기 때문에, 다양한 상황에 맞춰서 사용할 수 있습니다.

따라서, 당신이 언급한 cin.tie()만 사용된 경우에는 출력 연산과 관계없이 입력 연산만 필요한 상황이었을 가능성이 높습니다. 이와 같은 경우에는 cin.tie()만 사용하여 입력 연산의 성능을 향상시킬 수 있습니다.

질문에 대한 답변이 도움이 되었길 바랍니다. 추가적인 질문이 있다면 언제든지 물어보세요. 좋은 하루 되세요!

태욱님의 프로필 이미지
태욱

작성한 질문수

질문하기