C++ 코딩테스트 꿀팁! 헤더 인클루딩 타이핑이 귀찮을 때 : #include <bits/stdc++.h>

Date:     Updated:

카테고리:

태그:

🚀 #include <bits/stdc++.h>

🔥 장점

헤더 인클루딩 일일이 쓰기가 귀찮을 때!

image

나는 코딩테스트 답안 코드를 Visual Studio 에서 작성하고 있는데, 코드를 새로 작성할 때마다 #include 헤더를 인클루딩 하기가 귀찮으니 저렇게 내가 자주 사용하는 헤더들을 무더기로 미리 써놓고 사용하고 있었다.

그러던 와중에 다른 분들의 코테 답안에서 bits/stdc++.h 이 헤더를 인클루딩 한게 자주 보여서 뭔가 싶어 알아보니 사람들이 많이 사용하는 헤더들을 인클루딩 하는 전처리문들을 전부 한 데 모아둔 헤더파일이라는 것을 알게되었다! 즉, 저런 무더기의 헤더 파일 인클루딩 전처리문을 #include <bits/stdc++.h> 한 문장으로 퉁칠 수 있게 된 것이다. 이 헤더 파일 한 곳에에 저 많은 인클루딩 문들이 들어있기 때문이다!

📜bits/stdc++.h 내용은 이와 같다. (클릭하여 펼치기)
// C
#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>

#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif

// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif


🔥 단점

그러나 무수히 많은 헤더파일들을 전처리 과정에서 복사가 일어나게 되므로 컴파일 속도는 느려질 것 같다. 또한 많은 헤더 파일들이 복사되므로 .cpp 코드 파일의 용량도 매우 많아질 것이다.

image

채점 통과한 두 경우 중 위의 풀이는 #include <bits/stdc++.h> 을 사용하였고 아래는 필요한 헤더들만 인클루딩 직접 기재해준 풀이이다. #include <bits/stdc++.h> 때문인지 용량 차이가 큰 것을 확인할 수 있었다.

코딩 테스트 풀이에 있어 용량 제한이 있다던가, 컴파일 속도까지 제한 하는 문제가 혹시나 있다면 사용하면 안될 것 같다!


🚀 설치 방법

  • 구글에 bits/stdc++.h 다운로드 하고 검색하면 bits/stdc++.h 헤더 파일을 쉽게 구할 수 있다.
  • 이를 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include 경로에 📂bits 폴더를 만들고 그 안에 넣어주면 된다.
    • 2017 버전을 사용하고 있다면 2017 폴더로!
    • 그리고 Visual Studio 혹은 Visual Studio Code 를 껐다가 다시 실행시키면 이제 ``#include <bits/stdc++.h>` 코드에 에러가 안생기고 잘 인식 할 것이다!

위 경로에 한번 넣어주면 Visual Studio, Visual Studio Code 둘 다 적용 된다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기