Queue
- std::queue는 STL에서 제공하는 queue 자료구조(FIFO방식)의 컨테이너 어댑터이다. [CS] Stack&Queue&Heap
- stack처럼 deque컨테이너를 사용하여 구현하고, vector나 list로도 가능하다. [STL] 5. deque
- 삽입은 뒤에서, 삭제는 앞에서 이루어진다.
- 사용 시 <queue> 헤더를 추가해야 한다.
생성
queue<int> q;
멤버 함수
자주 사용되는 멤버 함수를 정리했다. 자세한 내용은 아래 사이트에서 볼 수 있다.
접근
queue<int> ; q.front(); q.back();
큐는 컨테이너 어댑터로 이터레이터를 통해 접근이 불가능하고 queue::front()나 queue::back()으로만 가능하다.
삽입
// 큐의 맨 뒤에 요소를 추가 q.push(value); // 큐의 맨 뒤에 요소를 생성하고 추가 q.emplace(10, "str");
push VS emplace
push는 요소를 맨 뒤에 삽입하고 emplace는 인수를 받아 요소를 생성한 뒤 맨 뒤에 삽입한다. vector의 emplace_back과 동작은 같지만 차이점이 있다. [STL] 1. vector 벡터는 증가할 때마다 요소의 복사 또는 이동이 발생하지만, 큐는 내부 컨테이너를 이용하여 요소를 관리하므로, 큐가 증가할 때 요소의 복사 또는 이동이 발생하지 않는다. 대신 내부 컨테이너의 emplace_back() 또는 비슷한 메서드가 호출된다.
삭제
// 큐의 맨 앞 요소를 삭제 q.pop();
확인
// 큐가 비어있는지 확인, 비어있으면 true q.empty(); // 큐의 맨 앞 요소를 반환 q.front(); // 큐의 맨 뒤 요소를 반환 q.back(); // 큐의 크기를 반환 q.size();
조정
// 두 큐를 교환 q.swap(other);
queue은 내부적으로 사용하는 컨테이너의 swap을 호출한다.