c++
-
c++ template, iterator대학/자료구조 2022. 10. 18. 17:46
- template int maximum(int a, int b) { if (a > b) return a; else return b; } ... maximum(1, 2); // 2 위 함수는 두 인자를 비교하여 큰 값을 리턴하는 함수이다. 하지만, int 자료형 밖에 비교할 수 없다. 만약 double형에 대해서 비교하고 싶다면, 같은 이름의 함수를 double형으로 또 만들어야 한다. 만약 문자열을 비교하고 싶다면? 클래스의 비교는? 같은 기능을 구현하기 위해서 정말 많은 같은 이름의 함수를 만들어야 할 것이다. 하지만, 아래의 template 기능을 사용하면 이런 걱정을 할 필요가 없다. template Item maximum(Item a, Item b) { if (a > b) return a; el..
-
c++ operator overloading대학/자료구조 2022. 10. 16. 22:19
기초 타입 변수의 경우 a + b 같은 연산자가 동작하는데 아무런 의심도 없이 사용했다. 하지만, 직접 정의한 클래스의 연산을 할 때, c1 + c2 같은 연산을 하면 에러가 발생한다. 이런 경우에 클래스에서 연산자 오버로딩 기법을 사용하면 된다. 설명을 위해서 이 포스팅에선 아래의 MyDoubleVector 클래스를 간단하게 정의하고 시작하겠다. class MyDoubleVector { public: ... private: double *data; // member variable: data container size_t max_capacity; // member variable: max qty of data size_t used; // member variable: counting data qty }..
-
c++ class, parameter types대학/자료구조 2022. 10. 16. 14:48
이번 포스트는 앞으로 자료구조 포스팅에서 사용할 c++ 기초 문법을 정리하고자 한다. (100% 커버는 못하고, 간단한 문법만 정리하고 나머지는 그 때 가서 정리하자) // rgb.h class RGB { public: // 생성자 RGB(char _red[] = (char *)"red", char _green[] = (char *)"green", char _blue[] = (char *)"blue"); // 파괴자 ~RGB(); void set_rgb(char _red[], char _green[], char _blue[]); char *&get_red(); char *&get_green(); char *&get_blue(); private: char *red; char *green; char *blu..