컨테이너 클래스
객체를 저장하는 클래스
클래스 템플릿의 선언 형식
template <templateParameters>
class ClassTemplateName {
......
}
- templateParameters : 템플릿 매개변수 목록
- → 자료형을 받을 템플릿 매개변수 : ‘typename T’ 또는 ‘class T’ 로 표기(T 는 사용자 정의 명칭)
- classTemplateName : 클래스 템플릿 이름
클래스 템플릿의 선언
매개변수 T의 값에따라, 달라진다.
template <typename T>
class Stack {
T *but; // buffer pointer
int top; // stack top
int size; // 스택의 크기
public :
Stack(int s); // 생성자
virtual ~Stack(); // 소멸자
bool full() const;
bool empty() const;
void push(const T & a);
void push(T&& a);
T&& pop();
};
표준 템플릿 라이브러리
표준 템플릿 라이브러리(STL) 이란?
- c++에 제공되는 표준 컨테이너 클래스 템플릿 라이브러리
- 벡터, 리스트, 스택, 큐 등의 컨테이너와 이들을 처리하는 연산을 포함한 데이터를 저장하기위한 템플릿 집합
STL의 구성 요소
- 컨테이너(container) : 데이터 저장
- 반복자(iterator) : 포인터의 역할순방향(++ 연산자 사용), 양방향(++ — 연산사 자용), 랜덤 액세스 임의 위치로 이동
- → 포인터의 개념이 일반화 된 것
- 알고리즘(algorithm) : 데이터 처리 기능
- → 컨테이너의 원소에 대해 적용할 수 있는 여러가지 연산이 가능
순차 컨테이너
- 동일한 자료형의 객체들을 선형적인 구조로 저장함
- vector
- 크기의 확장이 가능한 배열
- [ ] 연산자로 지정한 첨자를 이용하여 빠른 직접 접근
- 끝에 삽입 or 삭제 하는 것은 빠르나 그 외 위치에는 느리다
- list
- 이중 연결 리스트
- 어느 위치든 삽입이나 삭제가 효율적
- 직접 접근이 비효율적이므로 제공 x
- deque
- vector 와 list 의 혼합 형태로, 이들의 특성이 모두 필요 할 때 사용할 수 있으나 성능이 안좋음
연상 컨테이너
- 탐색트리와 같은 인덱스 구조를 이용
- 키를 이용한 검색 기능 제공
- set
- 키 객체만 저장, 키가 중복되지 않음
- multiset
- 키 객체만 저장하며, 동일한 키가 중복될 수 있음
- map
- (key, value) 저장
- 키 중복 x
- multimap
- map 과 같지만 동일한 키가 중복 가능
무순서 연상 컨테이너
- 연상 컨테이너 처럼 키를 이용한 검색기능 제공
- 해시함수를 이용하여 데이터 검색 시간 일정
unordered_[map, set …]
- 위의 검색기능 제공 내용과 같으니 해시함수를 이용하여 저장 및 검색
컨테이너 어뎁터
- 기본 컨테이너를 기반으로 특정 용도에 맞게 유도된 컨테이너
- 큐(queue)
- FIFO 구조
- priority_queue
- 우선순위에 따라 데이터를 액세스 하고 있는 구조
- stack
- LIFO 구조
728x90
'KNOU > C++' 카테고리의 다른 글
[C++프로그래밍] 예외처리 (0) | 2022.12.01 |
---|---|
[C++ 프로그래밍]연산자 다중정의 (0) | 2022.12.01 |
[C++ 프로그래밍] 클래스와 객체 (0) | 2022.12.01 |
[C++ 프로그래밍] 함수 (1) | 2022.12.01 |
댓글