코딩 테스트를 위한 자료 구조와 알고리즘 with C++
일종의 래퍼이며, 기존 컨테이너의 인터페이스를 제한하여 만든 기능이 제한되거나 변형된 컨테이너이다.
#include <deque>
#include <stack>
using namespace std;
void main()
{
// 덱을 사용해 스택을 만들었다.
deque<int> stck1;
stck1.emplace_back(1);
stck1.emplace_back(2);
stck1.pop_back();
// 스택에서는 지원하지 않는 기능이다.
stck1.emplace_front();
// 스택 컨테이너 어댑터
stack<int> stck2;
stck2.emplace(1);
stck2.emplace(2);
stck2.pop();
// 컴파일 에러!!
// stck2.emplace_front();
}
STL에서 제공하는 컨테이너 어댑터는 3가지가 있다.
- std::stack
- std::queue
- std::priority_queue
한 예시로 std::stack은 std::deque, std::vector, std::list를 컨테이너로 사용할 수 있다.
- 기본 컨테이너는 std::deque이다.
- 각 컨테이너는 메모리 재할당 등 내부적인 처리에 따라 용도가 다르므로 상황에 따라 적절한 컨테이너를 선택하면 된다.
#include <vector>
#include <list>
#include <deque>
#include <stack>
using namespace std;
void main()
{
// 덱을 컨테이너로 하는 스택 (기본값)
stack<int> stck_deq_default;
// 벡터를 컨테이너로 하는 스택
stack<int, vector<int>> stck_vec;
// 리스트를 컨테이너로 하는 스택
stack<int, list<int>> stck_lst;
}
'자료구조 & 알고리즘 > 코딩 테스트를 위한 자료 구조와 알고리즘 with C++' 카테고리의 다른 글
std::queue (0) | 2023.01.29 |
---|---|
std::stack (0) | 2023.01.29 |
std::deque (0) | 2023.01.28 |
반복자 무효화(Iterator Invalidation) (0) | 2023.01.27 |
std::list (0) | 2023.01.26 |