C++11 std::array 정적 배열 대체 우리가 보통 배열을 선언을 하면int arr[] = {1,2,3,4,5} 이렇게 선언을 한다.이렇게 선언할시에 우리가 [] 괄호 안에 num을 안써줘도 컴파일러 알아서 메모리를 잡아준 다는 것이다. 우리가 이번에 할 것은 C++11에서 std::array 라는 것이다.std::array를 쓸 경우 더 편하고 안정성 있게 사용할 수 있다. 코드를 보면서 이해해 보자. 12345678910111213141516171819202122232425#include #include using namespace std; void printLength(array &my_arr){ cout
주어진 집합에 모든 집합 찾기 알고리즘 원소 {a, b, c}가 있다면 {a}, {b}, {c}, {a b}, {a c}, {b c}, {a b c} 이렇게 모든 집합을 찾고 싶다. 이것을 C++로 표현을 해보자. 1234567891011121314151617181920#include using namespace std; void printSubsets(char set[]){ int n = 3; for (int i = 0; i
C++ ()연산자 오버로딩과 펑터(Functor) () 연산자를 오버로딩을 하게 되면 객체를 함수처럼 사용할 수 있게 된다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include using namespace std; class Point{ int xpos, ypos;public : Point(int x = 0, int y = 0) : xpos(x), ypos(y) {} Point operator+(const Point &pos) const { return Point(xpos + pos.xpos, ypos + pos.ypos); } friend ostream& operator
C++ 가상함수(virtual) 12345678910111213141516171819202122232425262728#include using namespace std; class Base{public: void OutMessage() { cout
C++ 생성자, 디폴트 생성자, 위임 생성자 C++에서 생성자에 대해서 알아보겠다. 12345678910111213141516171819202122232425#include using namespace std; class Position{public: int x; int y; char ch; void OutPosition() { cout
C++ 실행 시간 측정하기 내가 만든 함수가 얼마나 빠른지를 보기 위해서 실행 시간 측정하는 방법에 대해 알아보겠다. vector를 이용해서 동적 배열로 10개를 만든 다음무작위로 순서를 섞어서 std::sort 를 얼마 만큼의 시간이 들어가는지 측정을 해 볼 것이다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344#include #include #include #include #include using namespace std; class Timer{ using clock_t = std::chrono::high_resolution_clock; using second_t = std::chrono::duratio..
C++ vector을 stack처럼 활용하기 이번에는 vector을 stack처럼 활용하는 방법에 대해서 알아보겠다. stack은 넣는 것을 push라 하고 빼는 것은 pop이라 한다. 1234567891011121314151617181920212223242526272829#include #include using namespace std; void printStack(const vector &stack){ for (auto &e : stack) cout
함수 포인터의 사용 예 함수포인터를 어떻게 쓰이는 건지 어디에 쓰이는 건지에 대해서 알아보자. 123456789101112131415161718192021222324252627282930313233343536373839#include #include using namespace std; bool isEven(const int &number) // 짝수{ if (number % 2 == 0) return true; else return false;} bool isOdd(const int &number) // 홀수{ if (number % 2 != 0) return true; else return false;} typedef bool(*check_fcn_t)(const int&);// using check_..
선택정렬 알고리즘(Selection sort) 선택정렬 알고리즘에 대해서 설명하겠습니다.선택정렬 알고리즘이란?? 그림으로 보면 이렇다.그림으로 보면은 정렬할 값을 콕 찝어서 정렬을 하는거 같지만 우리가 코드로 나타내면 하나하나 일일이 다 값을 비교를 해봐야 한다.그래야 정렬이 되니까. 그럼 바로 코드를 보자 1234567891011121314151617181920212223242526272829303132333435#include using namespace std;void printArray(const int array[], const int length){ for (int index = 0; index
C++ 난수 생성의 원리와 사용법이번에는 C++에서 난수 생성의 원리와 난수 생성 라이브러리를 사용해 볼 것이다.우선 난수 생성의 원리를 알아보자. 123456789101112131415161718#include using namespace std; unsigned int PRNG(){ static size_t seed = 5523; seed = 8253729 * seed + 2396403; return seed % 37268;}int main(){ for (int count = 1; count
퀵정렬(Quick Sort) 구현 이번에는 퀵정렬 알고리즘을 구현을 해보겠다.퀵정렬이 이미 구현되어 있는 함수도 있기야 하지만 퀵정렬이 어떻게 돌아가는지 알기 위해서 구현을 한번 해보았다.퀵정렬 구현되어 있는 함수 -> qsort() 함수 1234567891011121314151617181920212223242526272829303132333435#include using namespace std;void quick_sort(int data[], int left, int right){ int i, j, key, temp; if (left
qsort() 구조체 정렬하는 법 이번에는 qsort 함수(퀵 정렬)을 구조체 정렬하는 법을 적어보겠다. qsort 기본 사용법은 -> http://aossuper8.tistory.com/39 Quick Sort 알고리즘 구현은 -> http://aossuper8.tistory.com/74 #include using namespace std; typedef struct { char student_number[10]; char name[20]; double subject[5]; }ITEM; int compare(const void *m, const void *n) { return ((ITEM*)m)->subject[3] - ((ITEM*)n)->subject[3]; } int main() { ITEM st..