일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 캐시전략
- 재귀
- 알고리즘
- 코드생성
- 완전탐색
- 자동파일생성
- 백엔드개발
- 순열알고리즘
- 자바
- 입출력
- nestjscli
- 코딩테스트
- 코드트리
- redis설계
- 최적화
- 코딩
- C
- Java
- 코드트리조별과제
- 분할정복
- typescripte
- redis키네이밍
- 소프트딜리트
- 조합알고리즘
- 자료구조
- harddelte
- c++
- 백준
- Baekjoon
- SoftDelete
- Today
- Total
Behind.dev
[c++] 입출력 시간 단축 본문
💡c++을 사용하여 알고리즘 문제를 풀 때 시간을 단축시키기 위해 아래의 코드를 추가해 준다.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
명확하게 사용하는 이유와 코드들의 기능에 알아보고자 글을 작성하였다.
ios_base::sync_with_stdio(false)
C++의 표준 스트림("cin", "cout" 등)과 C 표준 입출력 라이브러리("scanf", "printf" 등) 사이의 동기화를 해제한다.
- 기본적으로 C++의 표준 스트림은 C 표준 라이브러리와 동기화되어 있어 C표준 라이브러리의 함수와 섞어서 사용할 수 있다.
- 하지만 이 동기화는 성능에 영향을 주므로 동기화를 해제하면 cin 및 cout의 속도가 향상한다.
cin.tie(NULL)
C++에서 cin과 cout은 기본적으로 연결되어 있는데 이 연결을 해제해준다.
- 연결을 해제하지 않는다면 cin을 사용할 때 cout이 자동으로 플러시 된다.
- 그러므로 연결을 해제해 주면 cout이 자동으로 플러시 되지 않아 I/O 작업의 속도가 빨라진다.
✔️ cin과 cout 사이의 "연결이 되어있다"라고 할 때, 이는 cin을 사용하여 입력을 받기 전에 cout의 버퍼가 자동으로 플러시(flush)된다는 의미이다. 아래에서 연결되었다는 의미를 직관적으로 확인할 수 있는 예시를 들어보았다.
< 기본 연결 상태 >
#include <iostream>
using namespace std;
int main() {
cout << "Enter a number: ";
// 사용자로부터 숫자 입력 받기
int number;
cin >> number;
// 입력 받은 숫자 출력
cout << "You entered: " << number << endl;
return 0;
}
→ 프로그램을 실행하면 다음과 같은 순서로 동작한다.
1. cout 명령으로 " Enter a number: "라는 메시지가 출력 버퍼에 저장된다.
2. 사용자가 입력을 시작하기 전에 cin 명령이 실행되면서 cout의 버퍼가 자동으로 플러시 되고 버퍼에 저장된 메시지 ( "Enter a number:" )가 화면에 표시된다. => 이는 cin과 cout이 연결되어 있기 때문이다.
< 연결을 해제한 경우 >
#include <iostream>
using namespace std;
int main() {
// cin과 cout의 연결을 해제
cin.tie(NULL);
// 출력 메시지
cout << "Enter a number: ";
// 사용자로부터 숫자 입력 받기
int number;
cin >> number;
// 입력 받은 숫자 출력
cout << "You entered: " << number << endl;
return 0;
}
동작순서
1. "Enter a number: " 메시지가 출력 버퍼에 저장된다.
2. cin 실행 시 cout의 버퍼가 자동으로 플러시 되지 않기 때문에, 만약 버퍼가 충분히 차지 않았다면 화면에 아무것도 표시되지 않을 수 있다.
3. 사용자가 숫자를 입력하고 엔터를 누르면 입력이 받아들여지며, 그 후에 이전에 출력되지 않았던 "Enter a number: " 메시지와 함께 "You entered: [입력된 숫자]"가 출력될 수 있다.
'프로그래밍언어 > C++' 카테고리의 다른 글
[C++ STL] priority_queue (0) | 2024.06.02 |
---|---|
[c++] std::string::iterator 사용법 (0) | 2024.04.21 |