Make Unreal REAL.
article thumbnail
코딩 테스트를 위한 자료 구조와 알고리즘 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
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그