[디자인 패턴] #4_프로토타입 패턴, Prototype Pattern 게임 디자인 패턴 중 "프로토타입 패턴(Prototype Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 5 항목, "프로토타입"에 해당하는 내용입니다. 프로토타입 패턴 원형(Prototype)이 되는 인스턴스를 사용해서 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다. - GoF의 디자인 패턴 - "프로토타입 패턴"은 원형이되는 인스턴스를 하나 만들어 새롭게 생성할 객체들의 프로토타입으로 사용하는 디자인 패턴을 말합니다. 역시 이해를 위해 예제를 살펴보겠습니다. Monster + Sapwner, 몬스터와 스포터 class Monster { //... }; 1. Ghost 몬스터 cl..
분류 전체보기
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdHXGa%2FbtrHORNEk2s%2FunapgK9SVCv0atJTH6CK50%2Fimg.png)
[Basic C++] #54_STL 작업 알고리즘, for_each() STL 알고리즘 중 "for_each 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. for_each() #include #include #include #include using namespace std; int main() { map m{ {"One", 1}, {"Two", 2} }; // for_each( 원본 범위의 첫 번째, 원본 범위의 마지막, 콜백 함수 or 람다 ) for_each(cbegin(m), cend(m), [](const auto& p) {cout
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FISKbW%2FbtrHHkXUc9R%2FtPWUFVNqPNjEgl7YhHTgE1%2Fimg.png)
[Basic C++] #53_STL 알고리즘, remove + erase, 옮기고 삭제하기 STL 알고리즘 중 "remove 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. remove() #include #include #include #include using namespace std; int main() { vector vStr{ "", "one", "", "two", "three", "four" }; cout
[Basic C++] #51_STL 알고리즘, replace STL 알고리즘 중 "replace 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. replace() #include #include #include #include using namespace std; int main() { vector v{ 10, 20, 30, 40, 50 ,60 }; // 하한 값은 30, 상한 값은 50으로 Clamping합니다. int low = 30; int high = 50; // replace_if( 원본 범위 첫 번째, 원본 범위 마지막, 프레디킷, 교체할 새로운 값 ) replace_if(begin(v), end(v), [low](in..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHGvab%2FbtrHDAfGxkH%2FA7WwF8Ki3kWbcXozO6KTQ0%2Fimg.png)
[Basic C++] #51_STL 이동 알고리즘, move STL 알고리즘 중 "이동 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. move() #include #include #include #include using namespace std; class MyClass { public: // 1. vecDest에 vecSrc만큼의 공간을 할당하기위해 기본 생성자가 필요합니다. MyClass() = default; // 2. MyClass의 복제 생성자를 컴파일러가 제공하는 디폴트 복제 생성자를 사용합니다. MyClass(const MyClass& src) = default; MyClass(string str) :myStr(s..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNvmIo%2FbtrHkTZfTq0%2FKmeS9ZTJ8zpGGKcbjGUSg0%2Fimg.webp)
[디자인 패턴] #3_관찰자 패턴, Observer Pattern 게임 디자인 패턴 중 "관찰자 패턴(Observer Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 4 항목, "관찰자"에 해당하는 내용입니다. 관찰자 패턴, Observer 일대 다의 의존관계를 갖는 객체들이 어떠한 객체의 상태 변화를 그 객체와 의존성을 가진 다른 객체들이 그 변화를 "통지"받고 자동으로 업데이트할 수 있도록 합니다. 관찰자 패턴은 말 그대로 어떠한 객체의 상태 변화를 의존성을 갖는 다른 객체들에게, 혹은 관찰자들에게 그 변화를 통지하고 처리할 수 있게끔 하는 디자인 패턴입니다. 관찰자 패턴의 주요 포인트는 "피 관찰자"가 변화를 감지해 "관찰자"에게 그 변화들을 통지하는 객체들간의 관계 구조입니다...
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNFbVi%2FbtrHjyuFpZg%2FNMnT6LHmkGYW5rnLCY1vE1%2Fimg.png)
[Basic C++] #50-1_STL 알고리즘, 변경 순차 알고리즘, transform(), copy(), copy_if(), copy_n() STL 알고리즘 중 "변경 순차 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. 변경 순차 알고리즘 원본 항목들을 다른 구간에 복제해 넣거나, 삭제하거나, 변경하는 등의 "변경 순차 알고리즘"은 당연하게도 원본 항목들에 변경을 가합니다. 이러한 알고리즘들은 모두 "원본 범위"에서 항목들을 읽어드리고, 읽어드린 항목들을 통해 "대상 범위"에 추가하거나, 수정합니다. 물론, "원본 범위" == "대상 범위"의 경우도 가능합니다. * 주의: map, multimap, set, 그리고 multi..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5uAUu%2FbtrHbVxCUfu%2FJavIqjKS2TMabhpJK8YaVk%2Fimg.png)
[Basic C++] #49_STL 알고리즘, 불변 순차 알고리즘 STL 알고리즘 중 "불변 순차 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. 불변 순차 알고리즘 불변 순차 알고리즘은 "항목 열" 대상으로 동작하고, 원본 데이터에 변경을 가하지 않는 알고리즘을 의미합니다. 예를 들면, 어떤 항목 열의 범위 안에서 항목을 찾거나, 다른 항목 열의 범위와 비교하는 등 유틸리티 성격을 갖는 알고리즘들을 포함합니다. 검색 알고리즘 [Basic C++] #43_STL 알고리즘, find, find_if, accumulate [Basic C++] #43_STL 알고리즘, find, find_if, accumulate STL 알고리즘 중 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS5DgU%2FbtrG2413uYI%2FSfus89lpD0S3YmTexvu2x1%2Fimg.png)
[BOJ 알고리즘, C++] #2559_수열의 최대 구간 합, 누적 합 알고리즘 BOJ 알고리즘 문제 풀이, 2559_수열 누적 합 알고리즘을 통해 수열의 구간 합을 구하는 문제 문제 풀이 수열 중 주어진 구간 중 최대 합을 찾는 문제입니다. 앞서 살펴봤던 11659번 문제와 풀이 과정이 같습니다(아래 링크를 참조하세요) [BOJ알고리즘, C++]#11659_구간 합 구하기, Prefix Sum(누적 합) 알고리즘 [BOJ 알고리즘, C++] #11659_구간 합 구하기 4, Prefix Sum(누적 합) 알고리즘 BOJ 알고리즘 문제 풀이, 11659_구간 합 구하기 4 누적 합 알고리즘을 통해 수열의 구간 합을 구하는 문제 문제 풀이 과정 위 문 webddevys.tistory.com 먼저, 입력받은..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRCuXV%2FbtrGWzmpweB%2FUqwKz0juKUOmQsFK15IE30%2Fimg.webp)
[디자인 패턴] #2_경량 패턴, Flyweight Pattern 게임 디자인 패턴 중 "명령 패턴(Command Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 3 항목, "경량"에 해당하는 내용입니다. 경량 패턴 먼저, 경량 패턴이란 "공유"를 통해 다수의 "소립" 객체들을 효과적으로 지원하는 기법입니다. 경량 패턴의 요지는 "공유"입니다. 다수의 객체 인스턴스들이 공유하는 데이터 값을 한 데 모으고, 이러한 데이터들을 "고유 상태"라고 합니다. 그리고, 각 인스턴스들마다 다른 값을 갖는 나머지 데이터들을 "외부 상태"라고 구분하겠습니다. 경량 패턴은 다수의 인스턴스들이 공유하는 데이터들이 공통적으로 갖는 "고유 상태"를 공유하도록 만들어 효과적으로 메모리 사용량을 줄이도록 합니다..