Deque

Deque merupakan salah satu template container yang terdapat dalam STL (Standard Template Library). Sekalipun deque kepanjangan dari double ended queue, deque lebih mirip vector. Deque bisa diakses isinya berdasarkan indeks menggunakan method at seperti vector. Methodnya pun sama dengan vector, dengan tambahan push_front dan pop_front. Deque tidak mempunya method capacity karena cara penyimpanannya beda dengan vector.

Untuk menggunakan deque pada C++ kalian bisa menambahkan "#include <deque>". Berikut ini adalah contoh kode programnya.

#include <iostream>
#include <deque>

using namespace std;

int main(){
deque<int> dataku;

    //Isi dataku
    dataku.push_back(0);
    dataku.push_back(1);
    dataku.push_back(2);
    dataku.push_front(3);
    dataku.push_front(4);

    dataku[2]=100;

    cout << "Jumlah data : " << dataku.size();
    cout << endl;
    
    cout << endl;
    
    cout << "Isi : ";
    cout << dataku.at(0) << " ";
    cout << dataku.at(1) << " ";
    cout << dataku.at(2) << " ";
    cout << dataku.at(3) << " ";
    cout << dataku[4] << " ";
    
    dataku.clear();//Bersihkan dataku

    return 0;
}
Output :
Jumlah data : 5

Isi : 4 3 100 1 2

Isi dari deque bisa diakses dengan cara yang sama seperti array, yaitu menggunakan tanda "kurung kotak". Selain itu, kita bisa juga menggunakan at. "deque<int> dataku" bisa diganti dengan "deque<tipe_data> nama_variabel". Kalian bisa menggunakan deque dengan tipe data lain selain tipe data int.

Menampilkan Semua Data

Untuk menampilkan semua data sekaligus, kalian membutuhkan iterator yang digeser posisi pointernya dengan operator increment (++) di dalam for. Kalian juga membutuhkan method begin dan end untuk menampilkan data sesuai urutan aslinya. Jika kalian ingin menampilkan data secara terbalik, kalian membutuhkan method rbegin dan rend.

#include <iostream>
#include <deque>
#include <iterator>

using namespace std;

int main(){
deque<float> antrian={1, 1.5, 2, 2.5, 3, 3.5, 4};
deque<float>::iterator it;

    //Isi vektor

    antrian.pop_back();
    antrian.pop_front();
    cout << "Ukuran :";
    cout << antrian.size() << endl;

    cout << "Data pertama :" << antrian.front() << endl;

    cout << "Data terakhir :" << antrian.back() << endl;

    cout << "Data (urutan asli) : ";
    for(it=antrian.begin();it!=antrian.end();it++)
        cout<< *it << " ";

    cout << endl << "Data (urutan terbalik) : ";
    for(auto p=antrian.rbegin();p!=antrian.rend();p++)
        cout<< *p << " ";
    antrian.clear();//Bersihkan list

    return 0;
}
Output :
Ukuran :5
Data pertama :1.5
Data terakhir :3.5
Data (urutan asli) : 1.5 2 2.5 3 3.5
Data (urutan terbalik) : 3.5 3 2.5 2 1.5

Contoh kode program di atas mendeklarasikan deque dengan tipe data int. Tipe data pada deklarasi deque diapit dengan tanda "<" dan ">". Selain itu, isi deque diinisiasi dengan beberapa nilai awal. 

Pada kode program di atas, kita menambahkan data pada deque dengan menggunakan function pop_front dan pop_back. Selain itu, ada penghapusan data di akhir program. 

Method untuk Deque

Beberapa method yang biasa digunakan dalam deque adalah sebagai berikut :

  1. push_front => Menambahkan data di awal.
  2. pop_front => Menghapus data paling awal.
  3. push_back=> Menambahkan data di akhir queue.
  4. pop_back => Menghapus data paling akhir queue.
  5. front => Menunjukkan nilai data pada elemen pertama.
  6. back => Menunjukkan nilai data pada elemen akhir.
  7. empty => memastikan bahwa data sudah kosong.
  8. clear => Mengosongkan isi deque
  9. size => Mengembalikan jumlah elemen / data dalam deque.
  10. begin => Mengembalikan iterator berupa pointer yang menunjuk nilai pertama dari deque.
  11. end => Mengembalikan iterator berupa pointer yang menunjuk akhir dari deque
  12. rbegin => Mengembalikan akhir dari reverse iterator berupa pointer.
  13. rend => Mengembalikan awal dari reverse iterator berupa pointer.