1. 다음 빈 칸을 채우세요.1. STL 구성 요소에서 객체들을 저장하는 객체를 ( 컨테이너 ) 라 합니다.2. 컨테이너의 원소를 순회하고 참조하는 객체를 ( 반복자 ) 라 합니다.3. 여러가지 문제 해결을 위한 반복자와 동작하는 함수 템플릿을 ( 알고리즘 ) 라 합니다. 2. 다음 빈 칸을 채우세요.1. 컨테이너 원소가 자신만의 삽입 위치를 갖는 것을 ( 시퀀스 ) 컨테이너라 합니다.2. 컨테이너 원소가 특정 정렬 기준에 의해 자동 정렬된 것을 ( 연관 ) 컨테이너라 합니다. 3. 다음 빈 칸을 채우세요1. 배열 기반 컨테이너인 vector와 deque는 ( 임의 접근 ) 반복자를 제공하며, 그 외 모든 STL컨테이너는 ( 양방향 ) 반복자를 제공합니다.2. (시퀀스(순차열))은 원소의 순..
할당기컨테이너의 메모리 할당 정보와 정책(메모리 할당 모델)을 캡슐화한 STL의 구성 요소할당기는 템플릿 클래스이며 모든 컨테이너는 기본 할당기를 사용합니다.C++의 동적 메모리 할당 연산자 new와 delete를 사용자가 오버로딩해서 사용할 수 있듯이 STL의 할당기도 사용자가 직접 할당기를 정의하고 사용할 수 있습니다. 사용자 정의 할당기: 사용자가 직접 메모리 할당 방식을 제어할 수 있게 합니다. 다중 스레드에 최적화되고 안전한 사용자 메모리 할당 모델이 필요하거나 사용자가 컨테이너에 맞는 메모리 할당 모델을 설계하거나 특정 구현 환경에서 최적화된 메모리 할당 모델을 구축할 때 사용합니다. 컨테이너 기본 할당기 allocator#include #include #include using namespa..
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(..
컨테이너같은 타입을 저장, 관리할 목적으로 만들어진 클래스로 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...