C++

컨테이너 어댑터와 비트셋 컨테이너

Jagbbum 2023. 9. 23. 01:36

컨테이너 어댑터

컨테이너 어댑터란 다른 순차 컨테이너를 바탕으로 인터페이스를 다르게 래핑한 것을 말한다.

보다 단순한 인터페이스를 제공하기 위해 복수 항목을 삽입, 삭제하는 메서드와 항목 순회를 위한 반복자를 지원하지 않는다.

 

queue

-FIFO 시맨틱 구현

 

생성

#include <queue>

queue<int> q1;

 

룩업

- front()

- back()

 

삽입 메서드

- push() 

- emplace() : 항목 타입의 인수 목록을 전달하여 마지막 항목으로 추가

 

삭제

- pop() : 첫 항목 제거

 

priority_queue

우선순위 큐는 우선순위가 높은 항목이 가장 앞에 오도록 한다.

- 바탕 vector와 deque을 사용 가능

 

생성

 priority_queue<int, vector<int>, std::greater<int>> pq

위와 같이 생성할 수 있으며 greater을 less로 바꿔 사용할 수 있다.

 

stack

선입후출(FILO) 시멘틱을 구현

- 끝에서만 삽입 및 삭제가 발생하기 때문에 바탕 컨테이너 vector, list, deque 모두 가능

- 인터페이스는 priority_queue와 같음

 

비트셋 컨테이너

비트별로 on.off 상태를 저장하도록 관리되는 컨테이너

 

생성

bitset<10> bs

 

사용

bitset<10> bs
bs.set(3);
bs[8] = true;
auto str1 = "0011001100";
auto str2 = "0000111100";
bitset<10> bitsOne(str1);
bitset<10> bitsTwo(str2);
auto bits = bitsOne & bitsTwo;

set은 비트를 true로 설정한다.

[]로 해당하는 비트에 접근 가능하다.