전체 글

[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 알고리즘 중 ..
[BOJ 알고리즘, C++] #2559_수열의 최대 구간 합, 누적 합 알고리즘 BOJ 알고리즘 문제 풀이, 2559_수열 누적 합 알고리즘을 통해 수열의 구간 합을 구하는 문제 문제 풀이 수열 중 주어진 구간 중 최대 합을 찾는 문제입니다. 앞서 살펴봤던 11659번 문제와 풀이 과정이 같습니다(아래 링크를 참조하세요) [BOJ알고리즘, C++]#11659_구간 합 구하기, Prefix Sum(누적 합) 알고리즘 [BOJ 알고리즘, C++] #11659_구간 합 구하기 4, Prefix Sum(누적 합) 알고리즘 BOJ 알고리즘 문제 풀이, 11659_구간 합 구하기 4 누적 합 알고리즘을 통해 수열의 구간 합을 구하는 문제 문제 풀이 과정 위 문 webddevys.tistory.com 먼저, 입력받은..
[디자인 패턴] #2_경량 패턴, Flyweight Pattern 게임 디자인 패턴 중 "명령 패턴(Command Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 3 항목, "경량"에 해당하는 내용입니다. 경량 패턴 먼저, 경량 패턴이란 "공유"를 통해 다수의 "소립" 객체들을 효과적으로 지원하는 기법입니다. 경량 패턴의 요지는 "공유"입니다. 다수의 객체 인스턴스들이 공유하는 데이터 값을 한 데 모으고, 이러한 데이터들을 "고유 상태"라고 합니다. 그리고, 각 인스턴스들마다 다른 값을 갖는 나머지 데이터들을 "외부 상태"라고 구분하겠습니다. 경량 패턴은 다수의 인스턴스들이 공유하는 데이터들이 공통적으로 갖는 "고유 상태"를 공유하도록 만들어 효과적으로 메모리 사용량을 줄이도록 합니다..
[Basic C++] #48_함수 객체 어댑터, 바인더, not_1(), not_2(), mem_fn() STL 알고리즘 중 "함수 객체 어댑터"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. 함수 객체 어댑터 C++에서 제공하는 함수 객체를 보다 다방면에서 활용하기 위해 우리는 "함수 객체 어댑터"를 사용합니다. 함수 객체가 주어진 인터페이스와 형태가 다를 경우, 우리는 함수 객체를 단독으로 사용할 수 없습니다. 예를 들면, find_if의 프레디킷 함수는 하나의 인자만 넘겨받지만, "less()" 비교 함수 객체는 두 개의 인자를 필요로 하기 때문에 우리는 이때 함수 객체 어댑터를 활용합니다. 코드를 통해 자세한 내용을 살펴보겠습니다...
[Basic C++] #47_함수 객체 STL 알고리즘 중 "함수 객체"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. Overview 개념 산술 함수 객체 비교 함수 객체 논리 함수 객체 구조체 오버로딩 람다 함수 객체 #0. 개념 1. 개념 함수 객체는 함수처럼 동작하는 객체를 의미합니다. C++에서는 주로 Predicate를 표현하거나, 콜백 함수로 활용합니다. 헤더에 정의된 여러 함수 객체 클래스들을 활용하여 "콜백" 작업을 수행할 수 있습니다. #1. 산술 함수 객체 1. 코드 #include #include #include #include using namespace std; int main() { vector v{ 1, 2, ..
[디자인 패턴] #1_명령 패턴, Command pattern 게임 디자인 패턴 중 "명령 패턴(Command Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 2 항목, "명령"에 해당하는 내용입니다. 커맨드 패턴, 명령 패턴, Command Pattern "명령 패턴"은 메서드 호출을 실체화한 것입니다. 이때, "실체화"는 실제 하는 것으로, 즉 어떤 개념을 객체화하는 것을 의미합니다. 이해하기 상당히 어렵죠... 예제를 통해 살펴보겠습니다. 입력키 변경, 특정 동작 실행 void InputHandler::handleInput() { if(isPressed(Button_Q)) ThrowFire(); else if(isPressed(Button_W)) MakeShield(); else..
[Basic C++] #46_람다 표현식과 STL 알고리즘 STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. 람다 표현식의 활용 본문에 들어가기 앞서 아래 링크를 통해 "람다 표현식"의 활용을 먼저 체크하시기 바랍니다. [Basic C++] #45_람다 표현식 활용, 제네릭 람다 표현식, 람다 캡처 표현식, 리턴 타입으로서 람다 표 [Basic C++] #45_람다 표현식 활용, 제네릭 람다 표현식, 람다 캡처 표현식, 리턴 타입으로서 람다 표현식 STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목 webddevys.tistory.com count_if(), 람다 표..
[Basic C++] #45_람다 표현식 활용, 제네릭 람다 표현식, 람다 캡처 표현식, 리턴 타입으로서 람다 표현식 STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. Overview STL 알고리즘과 람다 표현식 캡처 블록 내 초기화 std::function 콜백 람다 표현식 #0. STL 알고리즘과 람다 표현식 1. 제네릭 알고리즘 + 람다 표현식 STL이 제공하는 제네릭 알고리즘의 Predicate(함수 객체)로 활용할 수 있습니다. 2. 예제 #include #include #include using namespace std; int main() { vector intV{ 11, 55, 101, 20..
[Basic C++] #44_람다 표현식, 기본 STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. Overview 개념 syntax 캡처 블록 mutable #0. 개념 1. 람다 표현식? C++에서 제공하는 람다 표현식은 익명 함수를 인라인으로 정의합니다. #1. syntax, 문법 1. 기본 문법 [capture list] (parameter list) -> return type { function body } capture 블록 활용은 선택적입니다. 캡처 블록은 유효 범위 내 주변 변수들을 캡처하기 위해 사용합니다. 컴파일러가 자동으로 "->"와 "return type"를 연역합니다. 따라서, 생략해도..
[Basic C++] #43_STL 알고리즘, find, find_if STL 알고리즘 중 "find", 그리고 "find_if"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. Overview 개념 find() find_if() #0. 개념 1. find()? template InputIterator find(InputIterator first, InputIterator last, const T& val); STL 알고리즘 중 "find()" 메서드를 먼저 살펴보겠습니다. 앞선 포스팅에서 살펴봤듯이 STL이 제공하는 컨테이너들은 "반복자"를 매개로 제네릭 알고리즘을 수행합니다. 그중 "find()" 메서드는 지정 구간 안에서 특정 항목 값..
Hardii2
개발 블로그