본문 바로가기

전체 글71

[C++] std::string std::string C++에서는 STL에서 제공하는 스트링(String) 클래스입니다. STL에서 제공해 주는 이 string 클래스는 다양한 연산자가 정의되어 있어 프로그래머가 일반 변수처럼 사용할 수 있습니다. string을 사용하기 위해서는 "#include " header를 추가해야 합니다. string 연산자 = 연산자 string 클래스 변수 간에 대입 연산 기능 제공 std::string str1 = "aaa"; std::string str2 = str1; printf("str1 : %s, str2 : %s \n", str1.c_str(), str2.c_str()); + 연산자 string 클래스 변수의 문자열 합치기 기능 제공 std::string str1 = "aaa"; std::str.. 2018. 3. 18.
[C++ STL] vector vector 연속된 메모리 기반의 컨테이너(배열 기반의 컨테이너)이다. 따라서 메모리를 먼저 잡아놓고 사용해야 한다. 그렇지 않으면 데이터를 추가할 때마다 메모리 재편성 작업을 한다. (vector는 메모리를 2중으로 관리하고 있다.(전체 길이와 데이터 개수) vector 메모리 재편성 STL 컨테이너는 데이터 삽입 시 메모리의 크기가 부족한 경우 메모리를 2의 증가율만큼 크기를 늘리도록 구현하고 있다. 재할당을 할 때 컨테이너가 원래 가지고 있었던 메모리에 저장된 모든 요소 데이터를 새 메모리에 복사하고 원래의 메모리에 저장된 모든 객체를 소멸시키고 원래 메모리를 해제한다. (할당 - 복사 - 소멸 - 해제의 비용이 들어간다.) 다음을 보면 메모리 재편성을 어떻게 하고 있는지 알 수 있다. 위 코드를 .. 2018. 3. 18.
[디자인 패턴]데코레이터 패턴(Decorator pattern) 데코레이터 패던 특정 개체에 동적으로 새로운 기능을 추가하거나, 이미 추가했던 기능을 삭제하기 위해 객체가 다른 객체를 참조할 수 있게 고안된 패턴이다. Decorator에서는 서브클래스를 만드는 것을 통해서 새로운 기능을 유연하게 확장할 수 있는 방법을 제공한다. 데코레이터 패턴 UML 데코레이터 패던 용도 Decorator 패턴의 주요 용도는 특정 객체의 기능 동적 추가/삭제이다.-전방 슈팅이 기본인 슈팅게임에서 아이템 획득에 따라 측방/후방 슈팅이 자유롭게 추가/삭제되어야 할 때.-커피 전문점에서 기본 메뉴에 휘핑, 캐러멜 등 첨가물이 자유롭게 추가될 때 가격 정산.-문서나 그래픽 에디터에서 drawing시 특수 효과들을 자유롭게 추가 또는 추가한 효과를 삭제해야 할 때. 데코레이터 패던 예제 압축.. 2018. 3. 11.
[C++](클래스 함수 포인터를 활용한)가위 바위 보 게임 가위 바위 보 게임 클래스 함수 포인터를 활용하여 가위 바위 보 게임입니다. [game.h Code] class C_GAME { public: enum class E_TYPE { E_NONE, E_SCISSORS, E_ROCK, E_PAPRE, E_MAX, }; private: E_TYPE m_ePlayer; E_TYPE m_eComputer; std::string m_arResult[(int)E_TYPE::E_MAX][(int)E_TYPE::E_MAX]; void (C_GAME::*m_pPrintType[(int)E_TYPE::E_MAX])(); public: C_GAME(); void init(); void printResult(); void selectPlayer(C_GAME::E_TYPE eTyp.. 2018. 3. 11.
[C++]랜덤함수 rand_s() 함수 rand()와 rand_s() 함수 랜덤 함수를 사용할 일이 있어서 rand() 함수를 찾던 중 rand_s()라는 함수가 있어서 찾아보았습니다. 먼저 랜덤 함수에 대해서 알아보겠습니다. rand() 함수 rand() 함수는 header에 포함되어 있는 함수이기 때문에 #include 를 추가해서 사용합니다. 구문 int rand( void ); 반환 값 난수를 반환하여 반환되는 오류는 없습니다. 설명 rand() 함수는 0부터 RAND_MAX(32767) 범위의 의사 난수 정수를 반환합니다. 난수 범위 지정 [0 ~9] int nData = 0; nData = (int)(((double)rand() / (RAND_MAX + 1) * 10)); [1 ~10] int nData = 0 nData = (in.. 2018. 3. 11.
[C++]함수 템플릿, 클래스 템플릿 템플릿 템플릿(template)은 C++ 프로그래밍 언어의 한 기능으로, 함수와 클래스가 제네릭 형과 동작할 수 있게 도와준다. 함수나 클래스가 개별적으로 다시 작성하지 않고도 각기 다른 수많은 자료형에서 동작할 수 있게 한다. 이는 튜링 완전 언어로 볼 수 있다. 템플릿은 C++에서 프로그래머들에게 유용한데, 특히 다중 상속과 연산자 오버로딩과 결합할 때 그러하다. C++ 표준 라이브러리는 연결된 템플릿의 프레임워크 안에서 수많은 유용한 함수들을 제공한다. (제네릭 형 : 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다.) 출처 : https://ko.wikipedia.org/wiki/%ED%85%9C%.. 2018. 3. 5.