Deque – STL C++

Deque là một chữ viết tắt cho doubly ended queue. Deque cho phép chèn và xóa nhanh ở cả hai đầu của hàng đợi. Mặc dù chúng ta cũng có thể sử dụng container vector để chèn và xóa ở cả hai đầu của nó, nhưng chèn và xóa ở mặt trước của mảng là tốn kém hơn ở phía sau.

Cú pháp

deque <object_type> deque_name;

object_type: kiểu dữ liệu (int, float, struct, class,…)
deque_name: tên biến deque

Function

Function Ý nghĩa
push_back(element e)
  • Chèn phần tử e vào cuối của deque
push_front(element e)
  • Chèn phần tử e vào đầu của deque
  • insert(iterator i, element e)
  • insert(iterator i, int count, element e)
  • insert(iterator i, iterator first, iterator last)
  • Chèn phần tử e vào vị trí trỏ tới bởi iterator i trong deque
  • Chèn phần tử e vào vị trí
  • Chèn phần tử e trong khoảng [first, last] vào vị trí trỏ tới bởi i trong deque
  •  pop_back()
  •  Remove phần tử ở cuối deque
  •  pop_front()
  •  Remove phần tử ở đầu deque
  •  empty()
  •  Trả về true nếu deque rỗng
  • Trả về false nếu deque có phần tử
  •  size()
  •  Trả về số lượng phần tử có trong deque
  •  max_size()
  •  Trả về số lượng phần tử mà deque có thể chứa
  •  swap()
  •  Swap các phần tử giữa 2 deque

Ví dụ: Minh họa các function của deque

#include <iostream>
#include <deque>
#include <vector>

using namespace std;

void printdeque(deque<int> dq);

int main ()
{

  int a[] = { 1,5,8,9,3 };

  /* creates s deque with elements 1,5,8,9,3  */
  deque<int> dq(a, a+5);
  cout << "deque: ";
  printdeque(dq);
  cout << "size() : " << dq.size() << endl;
  cout << "max_size() : " << dq.max_size() << endl;
  
  /* push_back() */
  dq.push_back(10);
  cout << "\npush_back(10): ";
  printdeque(dq);
  cout << "size: " << dq.size() << endl;
  cout << "max_size() : " << dq.max_size() << endl;
 
  /* push_front() */
  dq.push_front(20);
  cout << "\npush_front(20): ";
  printdeque(dq);
  cout << "size: " << dq.size() << endl;
  cout << "max_size() : " << dq.max_size() << endl;

  deque<int>::iterator i;
  i=dq.begin()+2;  /* i points to 3rd element in dq */
  
  /* insert(iterator, element) */
  dq.insert(i, 15);
  cout << "\ninsert(3rd position,15): ";
  printdeque(dq);
  cout << "size: " << dq.size() << endl;
  cout << "max_size() : " << dq.max_size() << endl;

  /* insert(iterator i, int count, element e) */
  dq.insert(dq.end(), 5, 9);
  cout << "\ninsert(dq.begin(), 5, 9): ";
  printdeque(dq);
  cout << "size: " << dq.size() << endl;
  cout << "max_size() : " << dq.max_size() << endl;

  int b[]={7,7,7,7};

  /* insert(iterator i, iterator first, iterator last) */
  dq.insert(dq.begin() , b , b+4 );
  cout << "\ninsert(dq.begin() , b , b+4): ";
  printdeque(dq);
  cout << "size: " << dq.size() << endl;
  cout << "max_size() : " << dq.max_size() << endl;

  system("pause");
}


void printdeque(deque<int> dq)
{
    deque<int>::iterator i;
    for (i = dq.begin(); i != dq.end(); i++)
    {
        cout << *i << " ";
    }
    cout << endl;
}

Kết quả:

Deque STL C++
Deque STL C++

Be the first to comment

Leave a Reply