C++ #include <bits/stdc++.h> 헤더 사용하기

 

 

 

 

 

 

<bits/stdc++.h> 헤더 파일

 

- #include <bits/stdc++.h> 로 사용한다.

 

- 표준 라이브러리가 아니므로 파일을 따로 추가해 주어야 사용할 수 있다.

 

- 자주 사용하는 라이브러리들(vector, algorithm, string, 등..)을 컴파일하도록 함으로써 라이브러리들을 일일이 추가해야하는 번거로움을 없앨 수 있다.

 

- 단, 자주 사용하는 라이브러리들을 전부 컴파일함으로써, 사용하지 않거나 불필요한 라이브러리들도 컴파일이 되므로 그만큼 시간이나 공간이 낭비된다.

 

 

 

 

 

[ 코 드 ]

#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>

 

 코드를 보면 알 수 있듯이 그냥 헤더들을 이것저것 선언해 놓은 것이다.

 

 

 

 

 

 

 

헤더 파일 다운로드

stdc++.h
0.00MB

 

 

이 파일을

 

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include

 

경로에서 bits 폴더를 생성한다. ( 해당 경로는 Visual studio가 설치된 기본적인 곳으로 없다면 본인이 찾아야 한다.)

 

 

그리고 생성한 bits 폴더 안에 다운 받은 stdc++.h 헤더 파일을 넣어주면 된다.

 

 

이제 #include <bits/stdc++.h> 를 선언하면 사용할 수 있다.

 

 

 

C++ 유클리드 호제법을 이용하여 최대공약수/최소공배수 구하기.

 

 

 

[ 코 드 ]


#include <iostream>

using namespace std;

int gcd(int a, int b) {
	return b ? gcd(b, a % b) : a;
}

int main() {

	cout << gcd(25, 45) << "\n";
	cout << 15*45/gcd(15, 45) << "\n";

	return 0;
}

12라인 > gcd 함수는 회귀 함수로서 두 인수 a와 b를 주면 a와 b의 최대공약수를 리턴한다.

 

+) "b ? ㄱ : ㄴ" 은 삼항 연산자로 b가 참이면 ㄱ을 실행하고 거짓이면 ㄴ을 실행한다.

 

13라인 > 최소 공배수 = a*b / 최대공약수; 이다.

 

 

 

 

 

[ 결 과 ]

 

 

 

 

 

 

 

 

 

C++ 회귀를 이용하여서 조합(Combination) 구현.

 

 

[코 드]


#include <string>
#include <vector>
#include <iostream>

using namespace std;

vector<vector<int>> result;
vector<int> v = { 1,2,3,4,5 };
int len = v.size();
vector<int> sub;

void ser(int k) {

    if (k == len  ) {
        result.push_back(sub);
    }
    else {
        sub.push_back(v[k]);
        ser( k + 1);
        sub.pop_back();
        ser( k + 1);
    }
}

int main()
{
    ser(0);

    for (int i = 0; i < result.size(); i++) {
        for (int k = 0; k < result[i].size(); k++) {
            cout << result[i][k];
        }
        cout << "\n";
    }

    return 0;
}



8라인 > 결과를 저장할 2차원 vector

9라인 > vector<int> v : 조합을 실행할 값의 집합

10라인 > int len : 조합을 실행할 값의 개수

 

 

 

 

 

 

[ 결 과 ]

 

 

 

 

 

 

 

C++ 회귀를 이용한 순열(permutation) 구현.

 

 

 

 

[ 코 드 ]


#include <iostream>
#include <string>
#include <vector>

using namespace std;

vector<vector<int>> result;
vector<int> v = { 1,2,3,4 };
int len = v.size();
bool choose[4];
vector<int> temp;

void ser( int k) {
	if (k == len) {
		result.push_back(temp);
	}
	else {
		for (int i = 0; i < len; i++) {
			if (choose[i]) continue;
			choose[i] = true;
			temp.push_back(v[i]);
			ser(k + 1);
			temp.pop_back();
			choose[i] = false;
		}
	}
}

int main() {

	ser(0);
	for (int i = 0; i < result.size(); i++) {
		for (int k = 0; k < result[i].size(); k++) {
			cout << result[i][k] << " ";
		}
		cout << "\n";
	}

}

7라인 > 결과 값들을 저장할 2차원 vector

8라인 > vector<int> v : 순열을 실행할 값들

9라인 > int len : 값들의 개수

10라인 > len만큼의 크기를 갖는 bool 배열

 

 

 

 

 

[ 결 과 ]

 

 

 

+ Recent posts