2.4.3 원소를 추가하고 제거하기
vector에서 순차열의 끝에 원소 하나를 추가하고 삭제하는 push_back(), pop_back() 멤버를 deque 컨테이너도 제공한다. 이들 멤버는 동작하는 방식도 같다. deque 컨테이너에는 순차열의 시작에도 이들 멤버와 유사한 push_front(), pop_front() 함수도 정의되어 있다.
std::deque<int> numbers {2, 3, 4}; numbers.push_front(11); // numbers의 원소: 11 2 3 4 numbers.push_back(12); // numbers의 원소: 11 2 3 4 12 numbers.pop_front(); // numbers의 원소: 2 3 4 12
deque에는 vector에서 제공하는 emplace_back() 멤버도 있으며 순차열의 시작에 새 원소를 생성해서 추가하는 emplace_front()도 있다. vector와 마찬가지로 deque의 내부에서 원소들을 추가하거나 제거할 때 emplace()나 insert()를 사용할 수 있다. 이러한 작업은 항상 기존 원소들을 이동해야 하므로 비교적 느리게 처리된다.
vector에서 설명한 모든 insert() 함수 멤버는 deque 컨테이너에서도 이용할 수 있다. deque에 원소들을 삽입하면 deque의 모든 반복자를 무효화하므로 반복자를 반드시 다시 생성해야 한다. deque의 erase() 멤버도 vector와 동작 방식이 같다. deque 컨테이너에서 clear()를 호출하면 모든 원소를 제거한다.