1. 덱(deque) vs 벡터(vector)
덱(deque)은 전체적으로 멤버 함수의 기능이나 사용방법이 벡터(vector)와 거의 같다. 벡터(vector)는 삽입과 삭제를 뒤에서만 해야 성능이 좋지만, 덱(deque)은 삽입, 삭제를 앞과 뒤에서 해도 좋으며 앞과 뒤 삽입, 삭제 성능도 벡터(vector)보다 좋다. 하지만 덱(deque)은 앞뒤에서 삽입, 삭제하는 것을 제외한 다른 위치에서의 삽입과 삭제는 벡터(vector)보다 성능이 좋지 않다.
- 덱(deque)과 벡터(vector)를 비교할 때 고려할 점
- 덱(deque)은 앞과 뒤에서 삽입, 삭제 성능이 벡터(vector)보다 상대적으로 좋다.
- 덱(deque)은 앞과 뒤에서 삽입, 삭제를 제외한 기능은 벡터(vector)보다 성능이 좋지 못하다.
- 게임 서버에서 덱(deque)을 사용하는 경우 :
게임 서버는 클라이언트에서 보낸 패킷을 차례대로 처리한다. 서버에서 네트워크 데이터를 받는 함수에서 데이터를 받으면 패킷으로 만든 후 받은 순서대로 순차적으로 처리한다. 이렇게 순차적으로 저장한 패킷을 처리할 때는 덱(deque)이 가장 적합한 자료구조이다. 왜냐하면 네트워크에서 데이터를 받아 패킷으로 만들어 저장하고, 그 패킷을 처리하는 부분은 게임 서버의 성능 면에서 가장 중요한 부분이므로 덱(deque)보다 더 빠르게 처리하기를 원한다. 따라서 독자적인 자료구조를 만들어 사용한다. 다시 말해 범용성보다는 성능을 우선시한다!
2. 덱(deque) 사용방법
- 덱(deque)을 사용하려면 덱(deque) 헤더파일을 포함한다.
#include < deque >
원 형 :
deque< 자료형 > 변수이름;
deque< int > deque1;
deque< 자료형 > 변수이름 = new deque< 자료형 >;
deque< int > deque1 = new deque< int >;
덱(deque) 멤버 중 일반적으로 자주 사용하는 멤버에서 벡터(vector)에 없는 pop_front와 push_front가 있다는 것 빼고는 벡터(vector)의 기능과 같다.