+ 이 글은 작성자가 직접 공부하고 복습하며 작성한 글입니다. 만약 직접 작성하지 않았다면, 꼭 출처를 밝히겠습니다!

 + 이 글은 개인적인 공부를 바탕으로 작성되었기에, 틀린 부분이 있을 수 있으며, 틀린 부분이 있다면 알려주시면 감사하겠습니다!

 + 이 글을 다른 곳으로 가져가신다면, 꼭 출처를 남겨주세요~

 + '참고사이트'는 공부하기 위해 참고한 사이트들을 모아 둔 것입니다.


 우리가 Codeforce나 Baekjoon 등과 같은 온라인 코딩 사이트에서 공부할 때, 많이 볼 수 있는 헤더파일 중에 <bits/stdc++.h>라는 헤더파일이 있습니다. 이것은 Pre-compiled header의 일종으로, 사람들이 많이 사용하는 표준 라이브러리 헤더들을 모두 한 번에 Compile될 수 있도록 해 둔 것이죠. 



 알고리즘 대회같은 곳에서 코딩 시간을 줄이기 위해 많이 사용합니다. 일일이 #include <stdio.h> 등을 작성하는 것은 생각보다 시간을 많이 잡아먹거든요.(알고리즘 대회에서는 같은 문제를 푼 사람들 중 빨리 푼 순으로 순위를 매깁니다.) 타이핑도 타이핑이지만, 사용할 함수과 그에 해당하는 헤더를 생각하는 시간도 줄일 수 있어 많이 효율적입니다.


 하지만, 장점이 있으면 단점이 있기마련!

 소프트웨어 공학적으로 보면, 모든 header를 compile해야하는 상황을 맞이하기 때문에, 불필요한 연산작업이 들어가 컴파일 시간이 느려지고, 프로그램의 크기가 쓸데없이 커지게 됩니다. 그러므로 지양해야하는 방법이기도 하죠.


 장점단점을 명확히 가지고 있으니, 상황에 따라 사용하면 편할 것 좋을 것 같습니다!


<장점>

 + 알고리즘 대회같이 시간이 작업시간을 줄이기 위한 방법으로는 효율적입니다.

 + 특정 함수를 위한 헤더를 찾는 시간을 줄일 수 있습니다.


<단점>

 + <bits/stdc++.h>는 GNU C++의 표준 라이브러리 헤더가 아닙니다. gcc 컴파일러에서 사용되는 헤더이므로, 따로 설정을 해줘야지 사용가능합니다.

 + 불필요한 작업과 시간이 들어갑니다.

 + 혹시라도 표준 라이브러리에 모든 헤더를 포함하는 헤더가 있다 하더라도, 컴파일 시, 불필요한 시간과 작업이 필요하기에, 해당 헤더를 사용하지 않는 것이 좋습니다.


[사용 방법]

1. 사용할 프로젝트 파일에 링크 추가

 1) https://gist.github.com/eduarc/6022859 여기서 stdc++.h를 다운 받습니다

 2) bits 폴더를 만들어 해당 헤더파일을 넣어줍니다.

 3) Visual Studio에 들어가서, 프로젝트 속성페이지 -> C/C++ -> 일반 -> 추가포함 디렉토리 여기에 bits폴더가 있는 경로를 입력합니다.(bits폴더를 포함하는 상위경로 - 예를들어 desktop폴더-bits폴더-stdc++.h 로 되어있으면, desktop 폴더의 경로를 입력)

 4) visual에서 사용하시면 됩니다.


2. Visual Studio에 추가.

 1) https://gist.github.com/eduarc/6022859 여기서 stdc++.h를 다운 받습니다

 2) bits 폴더를 만들어 해당 헤더파일을 넣어줍니다.

 3) Visual Studio가 설치된 폴더 -> VC 폴더 -> include 폴더
   - 일반적으로 "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include" 일겁니다.
 4) include 폴더 내부에 bits 폴더를 복사해 넣어줍니다.



[<bits/stdc++.h> 내부]



+ Recent posts