cout<<endl 와 cout<<“\n” 속도 비교

cout<<endl의 속도가 cout<<"\n"의 속도보다 느리다.

따라서 속도 문제에 민감한 경우 endl 사용보다 "\n" 사용을 권장한다.


ios::sync_with_stdio(false) 사용 방법

일반적으로 C++ 표준 stream 들은 C 표준 stream 과 동기화가 되어있다.

그래서 우리가 C(printf, scanf) 와 C++(cout, cin) 입출력 방식을 같이 사용할 수 있다.

하지만 ios::sync_with_stdio(false)를 사용하면 C++ 입출력 stream 들은 독립적인 공간(buffer)을 가지게 된다. 즉, ios::sync_with_stdio(false)의 의미는 C 와 C++의 동기화를 끊겠다는 것이다.

동기화를 끊으면 실행되는 공간(buffer)이 줄어들게 되어 실행 시간이 향상되게 된다.

주의할 점

ios::sync_with_stdio(false)를 사용하면 C 입출력 방식을 같이 사용하면 안 된다.

예시

#include <iostream>

using namespace std;

int main()
{
        ios::sync_with_stdio(false);

	cout<<"Test"<<end;

        return 0;
}

cin.tie(NULL)

일반적으로 cin 과 cout 은 tie 되어있다.

그래서

cout<<"ABCD"<<endl;
cin>>a;

cin 과 cout이 tie 되어있으면 입력(input) 이 실행되기 전에 출력(output)이 flush(비움) 된다.

하지만 cin.tie(NULL)을 사용하면 출력(output)이 flush(비움) 되지 않은 채로 입력(input)이 실행된다.

그래서 “ABCD” 가 출력되지 않는다.

그러므로 cin.tie(NULL)을 사용하고 입력을 받기 전에 출력을 하고 싶으면 수동으로 cout을 flush 해야 한다.

예시

#include <iostream>

using namespace std;

int main()
{
        cin.tie(NULL);

	cout<<"ABCD"<<endl;

        return 0;
}

감사합니다.


홈으로 가기 더 많은 C++ post 보기 post 목록 보기