처음에 알고리즘 문제를 풀다보면 귀찮?까다로운? 점이 include일 것이다.
어떤 헤더 파일에 어떤 함수가 들어있는지도 익숙하지 않고, 컴파일러는 include를 하라고 오류를 뱉어댄다.
어느 헤더 파일에 어떤 함수가 들어 있는지를 대략적으로 알고 있는지는 중요하지만, 어느 정도 실력이 생기고 난 다음에는 include를 하는 일이 귀찮게 느껴질 때가 있다.
이 <bits/stdc++.h>라는 헤더파일에는 우리가 자주 쓸만한 헤더파일들을 몽땅 다 include 해놓은 헤더파일이다.
이 헤더파일은 gcc 계열의 컴파일러에는 미리 내장되어 있다.
그래서 대부분의 Online Judge 사이트에서는 저 헤더 파일을 사용할 수 있다. (Judge 서버가 대부분 Linux 계열이니까...?)
하지만, 대부분의 사람(나 포함)들은 Windows 계열에서 아주 편한 Visual Studio를 사용한다.
이 Visual Studio는 <bits/stdc++.h>를 포함하고 있지 않다.
그래서 이 헤더 파일을 사용하려면 헤더 파일을 수동으로 include 폴더에 넣어줘야 한다.
오늘은 이 방법에 대해서 알아보자.
먼저, stdc++.h 파일을 다운 받아주자.
눈치 챈 사람들도 있겠지만 bits/stdc++.h라는 이름은 경로의 이름이다.
다시 말하면 bits라는 폴더 안에 stdc++.h라는 이름을 가진 헤더 파일을 include 한다는 뜻이다.
대부분, 설치할 때 경로 설정을 따로 바꾸지 않았다면, (14.21.27702는 Visual Studio 2019의 버전, 2019는 Visual studio의 버전입니다! 자신의 버전에 맞게 주소를 따라 들어가 주세요!)
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include
이 폴더로 들어가게 되면 우리가 아무렇지 않게 include 했던 헤더 파일들이 들어있다.
iostream, stack, queue 같은 헤더 파일들이 모두 들어있는 것을 확인할 수 있다.
여기다가 bits 라는 이름의 폴더를 생성해준다.
그리고 그 폴더 안에 다운받은 stdc++.h를 옮겨주면 끝!
한 가지 주의할 점은, Visual Studio가 새로운 버전이 나와서 업데이트 할 경우 자동으로 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