[STL] 컨테이너 어댑터

......·2023년 12월 14일

STL

목록 보기
7/8

컨테이너 어댑터 : 다른 컨테이너의 인터페이스를 변경한 컨테이너

  • Stack 컨테이너 : LIFO(last in first out)
  • Queue 컨테이너 : FIFO(first in first out)
  • priority-Queue 컨테이너 : 우선순위에 의해 관리되는 큐(디폴트 : less(<))

컨테이너 어댑터

Stack 컨테이너

  • LIFO방식의 컨테이너를 구현한 템플릿 클래스
  • 디폴트 = deque 컨테이너

템플릿 형식

template<class T, typename Container =std::deque<T>>
class stack

멤버 형식

value_type		: Container::value_type으로 T형식
size_type		: Container::size_type으로 첨자나 원소의 개수의 형식
container_type	: Container의 형식으로 디폴트 = deque<T>

인터페이스

  • 생성자
explict stack(const Container& = Container())	: 컨테이너의 기본 생성자를 호출해 stack을 생성하거나, 인자로 받은것을 생성
  • 멤버 함수
bool empty() const				: 컨테이너가 비어있는가?
size_type size() const			: 원소의 개수
void push(const value_type& x)	: 원소를 추가
void pop()						: 원소를 제거
value_type& top()				: Top의 원소를 참조
const value_type& top() const	: const 객체 Top의 원소를 참조
  • 연산자
s1 == s2	: s1이 s2와 같은가?
s1 != s2	: s1이 s2와 다른가?
s1 < s2		: s1이 s2보다 작은가?
s1 <= s2	: s1이 s2보다 작거나 같은가?
s1 > s2		: s1이 s2보다 큰가?
s1 >= s2	: s1이 s2보다 크거나 같은가?

Queue 컨테이너

  • FIFO방식의 컨테이너
  • 디폴트는 deque컨테이너

템플릿 형식

template<typename T, typename Container = deque<T>>
class queue

멤버 형식

value_type		: Container::value_type으로 T형식
size_type		: Container::size_type으로 첨자나 원소의 개수의 형식
container_type	: Container의 형식으로 디폴트 = deque<T>

인터페이스

  • 생성자
explict queue(const Container& = Container())	: 컨테이너의 기본 생성자를 호출해 queue을 생성하거나, 인자로 받은것을 생성
  • 멤버 함수
bool empty() const				: 컨테이너가 비어있는가?
size_type size() const			: 원소의 개수
void push(const value_type& x)	: 원소를 추가
void pop()						: 원소를 제거
value_type& front()				: 첫 원소를 참조
const value_type& front() const	: const 객체 첫 원소를 참조
value_type& back()				: 마지막 원소를 참조
const value_type& back() const	: const 객체 마지막 원소를 참조
  • 연산자
s1 == s2	: s1이 s2와 같은가?
s1 != s2	: s1이 s2와 다른가?
s1 < s2		: s1이 s2보다 작은가?
s1 <= s2	: s1이 s2보다 작거나 같은가?
s1 > s2		: s1이 s2보다 큰가?
s1 >= s2	: s1이 s2보다 크거나 같은가?

Priority_queue 컨테이너

  • 우선순위 큐
  • 디폴트 vector, 우선순위 디폴트 less(<)

템플릿 형식

template<typename T, typename Container = vector<T>, typename Comp=less<typename Container::value_type>>
class priority_queue

멤버 형식

value_type		: Container::value_type으로 T형식
size_type		: Container::size_type으로 첨자나 원소의 개수의 형식
container_type	: Container의 형식으로 디폴트 = vector<T>

인터페이스

  • 생성자
explict priority_queue(const Comp& = Comp(), const Container& = Container())	: 컨테이너의 기본 생성자를 호출해 priority_queue을 생성하거나, 인자로 받은것을 생성
  • 멤버 함수
bool empty() const				: 컨테이너가 비어있는가?
size_type size() const			: 원소의 개수
void push(const value_type& x)	: 원소를 추가
void pop()						: 원소를 제거
value_type& topt()				: top 원소를 참조
const value_type& top() const	: const 객체 top 원소를 참조

0개의 댓글