[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, ..
stl
[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++] #42_unordered_multimap, 비순차 연관 컨테이너, 중복 허용 C++ 개발에서 "unordered_multimap"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 #0. 개념 "unordered_multimap"은 알다시피 "unordered_map"에서 중복된 키의 항목 추가를 허용하는 버전입니다. 예외 사항은 이전에 공부했던 map과 multimap의 차이점과 동일합니다. 아래 링크를 올려두었습니다. unordered_multimap은 "operator []" 사용을 제한하고, "insert()"메서드의 반환 값이 pair 객체가 아니라 단순히 반복자라는 것입니다. 더불어, "e..
[Basic C++] #40_해시 함수, 비순차 연관 컨테이너, 해시 테이블 C++ 개발에서 "해시 함수"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 비순차 연관 컨테이너 해시 함수 해시 충돌, 해시 문제점 #0. 비순차 연관 컨테이너 C++의 STL(표준 라이브러리)의 비순차 연관 컨테이너는 해시 함수를 사용합니다. 비순차 연관 컨테이너에는 "unordered_map", "unordered_multimap", "unordered_set", 그리고 "unordered_multiset"이 있습니다. 이들은 모두 항목을 저장할 때, 정렬 작업을 수행하지 않습니다. #1. 해시 함수 해시 테이블을 구현하기 위해 "버킷(Buc..
[Basic C++] #39_multimap, 연관 컨테이너, 중복 허용 C++ 개발에서 표준 라이브러리(STL)의 "multimap"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 반복자 #0. 개념 [Basic C++] #38_map, 연관 컨테이너 [Basic C++] #38_map, 연관 컨테이너 C++ 개발에서 표준 라이브러리(STL)의 "map"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. map, 연관 컨 webddevys.tistory.com multimap은 키 하나에 2개 이상의 항목을 가질 수 있습니다. 그리고 multimap은 m..
#1. 개념 1. map [정의] : C++의 STL에서 제공하는 map 컨테이너는 지정된 형식의 키와 데이터 값을 한 쌍으로 레드-블랙 트리 자료구조에 저장하는 연관 컨테이너입니다. [특징] : map 컨테이너는 오직 키를 통해 접근 가능합니다. 더불어, map 컨테이너는 내부적으로 정렬 작업을 수행하며, 기준은 오름차순입니다. [성능] : map 컨테이너의 탐색/삽입/삭제 작업은 모두 O(log n)의 시간 복잡도를 가집니다. [Basic C++] #1 Map, Unordered_map, 해쉬 테이블 [Basic C++] #1 Map, Unordered_map, 해쉬 테이블 자료구조 중 해쉬 테이블(Key-Value-Pair)과 C++ STL이 제공하는 컨테이너 "map" , 그리고 "unordred..
[Basic C++] #36_forward_list, 순차 컨테이너 C++ 개발에서 표준 라이브러리(STL)의 forward_list에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 자체 메서드 #0. 개념 "forward_list"는 단방향 링크라는 점만 제외하면 "list"와 비슷합니다. "forward_list"는 단방향 링크이기 때문에 "반복자"가 한쪽으로만 이동이 가능합니다. 특정 항목에 접근하려면 반드시 이전 항목에 선제적으로 접근해야합니다. "begin()" 메서드는 폐쇄형 범위만 지원하여 첫 항목을 바로 리턴하죠. 하지만, "forward_list"는 마지막 항목뿐만 아니라 시작 항목도 "개방형 범위"로 ..
[Basic C++] #33_Vector, 순차 컨테이너 C++ 개발에서 표준 라이브러리(STL)의 Vector에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 초기화 복제, 대입 접근 삽입, 제거 크기, 용량 이동 시맨틱 #0. 개념 vector는 STL 컨테이너이며, 순차 컨테이너입니다. 여느 STL 컨테이너처럼, 템플릿 클래스이며, "항목 타입"과 "할당자 타입" 등 두 개의 파라미터를 인자로 받습니다. 저장된 항목들은 연속된 메모리에 저장되고, 각 항목은 인덱스를 통해 접근 가능합니다. #1. 초기화 #include // 디폴트 생성자 vector intVector1;// 항목 개수: 0 vector intVec..