ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] 불편함을 해소 시켜주는 bits/stdc++.h
    C++ 2022. 2. 12. 22:12
    728x90

     

    C++로 알고리즘 문제를 풀이하다보면 특정 기능이나 컨테이너를 사용하기 위해 라이브러리를 추가하는 경우가 많다.

    예를 들어, vector, queue, algorithm, string 등과 같은 것들이다. 

     

    매 번 문제를 풀때마다 필요한 라이브러리들을 그때 그때 넣어줘야 하는데, 간단한 코드면 몰라도 개인적으로 불편함을 많이 느꼈다.

     

    이러한 번거로움을 덜어줄 수 있는 라이브러리가 바로 bits/stdc++ 헤더파일인데 이 파일에는 기본적인 라이브러리부터 시작해서 사용되는 빈도수가 높은 라이브러리, 생소한 라이브러리까지 포함되어 있는데 코드는 다음과 같다.

     

     

    cpp 파일을 만든 후 여러 라이브러리들을 추가할 필요없이 #include <bits/stdc++.h> 만 작성해준다면 아래의 라이브러리들이 포함되어 있어 훨씬 편리하게 문제를 해결할 수 있다는 것이다.

    #pragma once
    #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>
    
    #include <ccomplex>
    #include <cfenv>
    #include <cinttypes>
    #include <cstdalign>
    #include <cstdbool>
    #include <cstdint>
    #include <ctgmath>
    #include <cwchar>
    #include <cwctype>
    
    // 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>
    #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>

     

    특히, 제한시간이 있는 코딩 테스트를 본다거나 알고리즘 대회를 나간다면 간소한 시간 차이로 결과가 갈릴 수 있기에 어떤 라이브러리를 추가할 것인지 생각하는 과정과 직접 하나씩 작성하지 않아도 되어 여러모로 시간 단축을 할 수 있었다.

     

    그러나, 표준 라이브러리가 아니라서 처음에는 따로 설정을 해줘야 하며, 사용하지 않는 라이브러리까지 불러오는 작업을 하기에 불필요한 시간과 공간이 쓰일 수 있다. 알고리즘 PS 할 때는 확실히 장점이 차지하는 게 더 크므로 효율적일 수 있으나 이외에는 사용하지 않는 편이 나을 것 같다.

     

     

    본 헤더파일을 사용하길 원한다면 아래와 같은 과정을 거치면 된다.

     

    <Visual Studio 2019 기준>

     

    1. stdc++.h 파일을 다운받는다. (하단 파일 참고)
    2. C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include 경로를 따라 bits 폴더를 생성해 해당 헤더파일을 bits 폴더 안에 넣어준다. (MSVC 다음 숫자에 해당하는 directory는 사용자마다 다를 수 있다.)
    3. Visual Studio를 실행해 프로젝트 내부 cpp 파일 최상단에 #include <bits/stdc++.h> 을 추가해준다. (bits 폴더를 따로 생성해주지 않는다면 에러가 뜨니 주의할 것)

     

     

    stdc++.h
    0.00MB

     

     

    코드업이든 백준이든 여러 알고리즘 문제 사이트들을 통해 문제를 풀다보면 항상 귀찮은 부분이었는데 조금이나마 해결해줄 수 있어서 주관적인 생각이지만 C++ 사용자에겐 매우 편리한 라이브러리인 것 같다..!

     

    728x90

    댓글

Designed by Tistory.