분류 전체보기

[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()" 메서드는 지정 구간 안에서 특정 항목 값..
[BOJ 알고리즘, C++] #11659_구간 합 구하기 4, Prefix Sum(누적 합) 알고리즘 BOJ 알고리즘 문제 풀이, 11659_구간 합 구하기 4 누적 합 알고리즘을 통해 수열의 구간 합을 구하는 문제 문제 풀이 과정 위 문제를 해결하기 위해 우리는 누적 합 알고리즘 두 가지를 선행할 필요가 있습니다. 1. 구간 합 (Prefix Sum) 2. 투 포인터(Two Pointers) Prefix Sum, 구간 합 /* 1. Prefix Sum을 계산하여 배열에 저장합니다. 2. i(left bound) ~ j(right bound) 구간의 합은 array[r] - array[l-1] 입니다. */ #include using namespace std; constexpr size_t n = 5; ..
[Basic C++] #42_unordered_multimap, 비순차 연관 컨테이너, 중복 허용 C++ 개발에서 "unordered_multimap"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 #0. 개념 "unordered_multimap"은 알다시피 "unordered_map"에서 중복된 키의 항목 추가를 허용하는 버전입니다. 예외 사항은 이전에 공부했던 map과 multimap의 차이점과 동일합니다. 아래 링크를 올려두었습니다. unordered_multimap은 "operator []" 사용을 제한하고, "insert()"메서드의 반환 값이 pair 객체가 아니라 단순히 반복자라는 것입니다. 더불어, "e..
[Basic C++] #41_unordered_map, 비순차 연관 컨테이너 C++ 개발에서 "unordered_map"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 초기화 그 외 자체 메서드 #0. 개념 template ,// == 해시 함수 객체 형식 class Pred = std::equal_to,// == 프레디킷 형식 class Alloc = std::allocator// == 할당자 클래스 class unordered_map; Details C++ 표준 라이브러리에서 제공하는 지정된 형식의 키와 데이터 값을 한 쌍으로 해시 테이블 자료구조를 활용하여 저장하는 비 순차 연관 컨테이너입니다. 접근, 삽입, 그..
Hardii2
'분류 전체보기' 카테고리의 글 목록 (44 Page)