1. 개요


  • 알고리즘 풀이를 하다보면 자주 보인다.
    • #include <bits/stdc++.h>
  • BOJ 문제를 풀면 다른 사람의 공개 코드를 볼 수 있다.
    • 저 헤더파일은 뭘까?



2. 세부내용


  • 파일을 열어보면 단순한 헤더파일 선언문의 집합이다.
    • 아래에서 파일 내용을 볼 수 있다.
  • 보통 헤더파일은 #ifndef ~ #endif로 구성되어,
    • 중복해서 작성해도 문제가 없다.
    • algorithm 헤더파일 상단부를 보면 다음과 같다.
      • 따라서 몇 번을 include 하던 간에 상관없다.
      #ifndef _ALGORITHM_
      #define _ALGORITHM_
      
  • 그러니 우리는, 맘편히 사용하면된다.
  • 다만, 알고리즘 초기에는 선언문을 직접 써보는 걸 추천한다.
    • 나중에 실제로 사용할 때 함수가 어디에 들어가 있는지 모를 수 있다..
  • 본인은 처음 C++ 공부할 때 아래 선언문도 사용 안했다.
    • using namespace std;
  • 이미 많이 풀어본 문제거나, 헤더파일의 위치를 다 알 때 사용하도록 하자

  • 참고로 이 헤더파일은 기본적으로 존재하는 것이 아니다.
    • 아래 경로에 bits라는 폴더를 생성한다.
      • 다른 경로는 다를 수 있지만 include는 변하지 않는다.
      • Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\include
    • 폴더 안에 stdc++.h 파일을 넣어주기만 하면!
      • 다음과 같은 선언이 가능해진다.
      • #include <bits/stdc++.h>
  • 주의할 점은 버전에 따라 매번 다시 추가해줘야 한다는 것이다.
    • 위에 경로로 예를 들면 14.34.31933가 버전이다.
    • 버전이 달라지면 해당 버전 폴더의 include에 폴더를 생성하고 넣어줘야 한다.



3. Header file

  #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