reverse_iterator (역방향 반복자)역방향 반복자도 ++와 -- 로 반복하지만 정방향 반복자의 반대로 동작합니다.역방향 반복자가 ++ 되면 끝지점 인덱스가 5일경우 4로 이동하고, 4에서 -- 로 이동하면 5로 이동합니다.#include #include using namespace std;int main() { vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); for (vector::iterator iter = v.begin(); iter != v.end(); iter++) { cout ::iterator> riter(v.end()); //v의 끝지점의 반대편 = v의 시작..
함수객체클라이언트가 정의한 동작을 다른 구성 요소에 반영하려 할 때 사용함수 객체 사용시 STL 구성 요소를 더욱 유연하게 사용 할 수 있음. 함수 객체를 적용한 Sort 알고리즘#include #include #include #include using namespace std;int main() { vector v; v.push_back(50); v.push_back(40); v.push_back(30); v.push_back(20); v.push_back(10); sort(v.begin(), v.end(), less()); for (vector::iterator iter = v.begin(); iter != v.end(); iter++) { cout ()); for (vector::iterator ..
어댑터구성 요소의 인터페이스를 변경 어댑터 종류컨테이너 어댑터 : Stack, Queue, Priority_Queue반복자 어댑터: reverse_iterator, back_insert_iterator, front_insert_iterator, insert_iterator함수 어댑터: 바인더(binder), 부정자(negator), 함수 포인터 어댑터 Stack 컨테이너#include #include using namespace std;using namespace std;int main() { stack st; //스택은 deque컨테이너를 가지고 만들어진 클래스 //어댑터는 기존의 컨테이너의 인터페이스 기능을 변경해서 만들어진 컨테이너(?) st.push(10); st.push(20); st.push(..
알고리즘컨테이너에서 특정 원소나 위치를 삽입, 삭제, 수정 하기 위한 로직대부분 알고리즘은 순방향 반복자를 요구하지만, 몇가지 알고리즘은 임의 접근 반복자를 요구합니다. STL의 7가지 알고리즘 범주원소를 수정하지 않는 알고리즘원소를 수정하는 알고리즘제거 알고리즘변경 알고리즘정렬 알고리즘정렬된 범위 알고리즘수치 알고리즘 find 알고리즘#include #include #include using namespace std;int main() { vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); vector::iterator iter; iter = find(v.begin(), v.end(),..
반복자컨테이너와 알고리즘이 하나로 동작하게 묶어주는 인터페이스 역할 반복자의 특징반복자는 컨테이너 내부의 원소(객체)를 가리키고 접근할 수 있어야 한다.(*연산자 제공)반복자는 다음 원소로 이동하고 컨테이너의 모든 원소를 순회할 수 있어야 한다.(++ 연산자 제공, !=, == 비교연산자 제공) 컨테이너 원소(객체)의 집합 = 순차열(sequence)순차열은 원소의 순서 있는 집합, 하나의 시작과 하나의 끝을 같는다. = 투 포인터를 갖는다.STL은 시작과 끝을 가리키는 begin( ) 과 end( )가 순차열의 시작과 끝을 가리키는 반복자를 반환한다. #include #include using namespace std;int main() { vector v; v.push_back(10); v.push_..
컨테이너같은 타입을 저장, 관리할 목적으로 만들어진 클래스로 2가지로 나눕니다.표준 시퀀스 컨테이너컨테이너 원소가 자신만의 삽입 위치(순서)를 가지는 컨테이너vector, deque, list: 선형적표준 연관 컨테이너저장 원소가 삽입 순서와 다르게 특정 정렬 기준에 의해 자동 정렬되는 컨테이너set, multiset, map, multimap: 비선형적 시퀀스 컨테이너는 삽입되는 순서에 따라 원소의 위치가 결정되고 바뀌지 않음!연관 컨테이너는 삽입 순서와 상관없이 정렬 기준에 따라 원소의 위치가 결정됨!또한 컨테이너는 데이터를 하나의 연속한 메모리 단위로 저장하느냐에 따라 두가지로 나뉩니다. 배열 기반 컨테이너데이터 여러개가 하나의 메모리 단위에 저장됨. vector, deque 노드 기반 컨테이너 ..
STL이란?C++ 라이브러리로 Standard Template Library 의 약자프로그램에 필요한 자료구조, 알고리즘을 템플릿으로 제공하는 라이브러리. STL의 구성요소이름내용컨테이너(Container)객체를 저장하는 객체로 컬렉션 혹은 자료구조반복자(Iterator)포인터와 비슷한 개념. 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리키게 하는 역할을 수행함.알고리즘(Algorithm)정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿함수 객체(Function Obejct)함수처럼 동작하는 객체, operator( ) 연산자를 오버로딩한 객체어댑터(Adapter)구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경할당기(Alloc..
문제1다음은 배열의 원소를 복사하는 함수 템플릿 Copy( )의 호출 코드입니다. 함수 템플릿 Copy( )를 작성하세요.//1번int arr1[5] = { 10, 20, 30, 40, 50 };int arr2[5];//Copy(t, s, n) t:목적지 주소, s:소스 주소, n:원소 개수Copy(arr2, arr1, 5); 문제1 풀이코드//1번문제 Copy 템플릿 함수 templatevoid Copy(T* t, T* s, int n) { for (int i = 0; i 문제2다음은 Push( ), Pop( ), Empty( ) 인터페이스를 갖는 Stack 객체의 사용 코드입니다. 최소한의 Stack 클래스를 작성하세요.//2번Stack st;st.Push(10);st.Push(20);st.Pus..
함수 템플릿템플릿: 무언가를 만들어 내기 위한 틀템플릿은 크게 2가지로 나뉩니다. 함수 템플릿과 클래스 템플릿.함수 템플릿: 여러 함수를 만들어 내기 위한 틀클래스 템플릿: 여러 클래스를 만들어 내기 위한 틀 쉽게 말하면 같은 이름과 매개변수이지만 반환 타입이나 매개변수 타입이 달라서 여러개를 선언하게 되어 중복되는 함수를 줄이기 위해 정의하는 것입니다. 선언 방식template함수 or 클래스 선언{ T data;} 코드#include using namespace std;templatevoid Print(T1 a, T2 b) { cout void PrintArray(T* arr) { for (int i = 0; i (arr1); //명시적 호출 double arr2[3] = { 1.1, 2.2, 3...