본문 바로가기

알고리즘 문제풀이/알고리즘

[c++] deque 함수

https://en.cppreference.com/w/cpp/container/deque

 

std::deque - cppreference.com

template<     class T,     class Allocator = std::allocator > class deque; (1) (2) (since C++17) std::deque (double-ended queue) is an indexed sequence container that allows fast insertion and deletion at both its beginning and its end. In addition, insert

en.cppreference.com

Deque란?

"Deque" redirects here. It is not to be confused with dequeueing, a queue operation.

Not to be confused with Double-ended priority queue.

"Deque는 dequeing(queue에서 원소 제거하기)이나 double-ended priority(우선순위) queue와 헷갈려서는 안된다. 서로는 다르다!"

 

Deque(double-ended queue) is an abstract data type that generalizes a queue, for which elements can be added to or removed from either the front or back.

 

여기서 주의해야할 것은, deque는 양방향으로 원소를 추가 및 삭제가 용이한 자료구조일 뿐,

어떠한 우선순위나 정렬된 데이터 형태를 나타내는 것이 아니다!

그러므로, 정렬을 원할 땐, sort함수를 같이 써야 한다.

 

예제

#include <iostream>
#include <deque>
#include <algorithm> // sort함수
 
int main()
{
    // Create a deque containing integers
    std::deque<int> d = {7, 5, 16, 8};
 
    // Add an integer to the beginning and end of the deque
    d.push_front(13); // front에 넣기
    d.push_back(25); // back에 넣기
    
    d.pop_front(); // front 꺼내기
    d.pop_back(); // back 꺼내기
    
    std::sort(d.begin(), d.end()); // 오름차순 정렬
 
    // Iterate and print values of deque
    for(int n : d) {
        std::cout << n << '\n';
    }
}