컴파일러 업그레이드 (in dev-cpp)

  • 도구 - 컴파일러 설정 - 컴파일러 - 컴파일러 추가 명령에 아래 문구를 추가

    -std=c++14
    
  • 컴파일러 업그레이드 시 예약어 auto 사용 가능

    for(auto x : a) cout << x << endl;
    

입출력 속도 향상

  • main 함수 시작할 때 다음과 같은 문구 삽입

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

      • 표준 스트림 클래스의 타입과 무관한 멤버들을 포함하고 있는 기초 클래스
        그림1
      • 더 자세한 정보
    • sync_with_stdio(true)

      • cin과 cout 등의 C++ 표준 스트림 버퍼와 printf와 scanf 등의 C 표준 버퍼를 병행 및 동기화해서 사용하게 됨
    • sync_with_stdio(false)

      • cin과 cout 등의 C++ 표준 스트림 버퍼만 사용하겠다. -> 속도 C 표준 버퍼보다 빨라지게 됨.
    • cin.tie(NULL);

      • cin을 cout으로부터 untie한다. stream을 tie하면 다른 stream에서 입출력 요청이 오기 전에 stream을 flush한다.

        cout << "Enter name:";
        cin >> name;
        
      • 위의 예시에서 cin과 cout이 tie된 상태라면, 프로그램이 user에게 입력을 요구하기 전에 output이 flush된다.
        stream을 untie하면 output이 flush되지 않은 채로 user에게 입력을 요구하게 되고, 따라서 "Enter name" 메시지는 출력되지 않을 것이다. 그러므로 untie가 되어있다면 cin으로 입력을 받기 전에 수동적으로 cout을 flush 시켜주어야 한다.

    • 실제 입력 속도 비교 결과

    • 실제 출력 속도 비교 결과

모든 라이브러리를 대체하는 라이브러리

  • 모든 표준 라이브러리 헤더들을 모두 한 번에 컴파일될 수 있도록 함.

  • 보통 알고리즘 대회에서는 컴파일 시간을 고려하지 않으므로, 사용해도 무관함.

    #include <bits/stdc++.h>
    

+ Recent posts