Bagikan melalui


deque Kelas

Mengatur elemen dari jenis tertentu dalam pengaturan linier dan, seperti vektor, memungkinkan akses acak cepat ke elemen apa pun, dan penyisipan dan penghapusan yang efisien di bagian belakang kontainer. Namun, tidak seperti vektor, deque kelas ini juga mendukung penyisipan dan penghapusan yang efisien di bagian depan kontainer.

Sintaks

template <class Type, class Allocator =allocator<Type>>
class deque

Parameter

Type
Jenis data elemen yang akan disimpan di deque.

Allocator
Jenis yang mewakili objek alokator tersimpan yang merangkum detail tentang dequealokasi dan alokasi memori . Argumen ini bersifat opsional, dan nilai defaultnya adalah allocator<Type>.

Keterangan

Pilihan jenis kontainer harus didasarkan secara umum pada jenis pencarian dan penyisipan yang diperlukan oleh aplikasi. Vectors harus menjadi kontainer pilihan untuk mengelola urutan ketika akses acak ke elemen apa pun berada pada premium dan penyisipan atau penghapusan elemen hanya diperlukan pada akhir urutan. Performa kontainer daftar lebih unggul ketika penyisipan dan penghapusan yang efisien (dalam waktu konstan) di lokasi mana pun dalam urutan berada pada premium. Operasi seperti itu di tengah urutan memerlukan salinan elemen dan penugasan sebanding dengan jumlah elemen dalam urutan (waktu linier).

Deque realokasi terjadi ketika fungsi anggota harus menyisipkan atau menghapus elemen urutan:

  • Jika elemen dimasukkan ke dalam urutan kosong, atau jika elemen dihapus untuk meninggalkan urutan kosong, maka iterator sebelumnya dikembalikan oleh begin dan end menjadi tidak valid.

  • Jika elemen disisipkan pada posisi dequepertama , maka semua iterator, tetapi tidak ada referensi, yang menunjuk elemen yang ada menjadi tidak valid.

  • Jika elemen disisipkan di akhir deque, maka end dan semua iterator, tetapi tidak ada referensi, yang menunjuk elemen yang ada menjadi tidak valid.

  • Jika elemen dihapus di bagian dequedepan , hanya iterator dan referensi ke elemen yang dihapus menjadi tidak valid.

  • Jika elemen terakhir dihapus dari akhir deque, hanya iterator ke elemen akhir dan referensi ke elemen yang dihapus menjadi tidak valid.

Jika tidak, menyisipkan atau menghapus elemen membatalkan semua iterator dan referensi.

Anggota

Konstruktor

Nama Deskripsi
deque Membangun sebuah deque. Beberapa konstruktor disediakan untuk menyiapkan konten baru deque dengan cara yang berbeda: kosong; dimuat dengan sejumlah elemen kosong tertentu; konten dipindahkan atau disalin dari yang lain deque; konten disalin atau dipindahkan dengan menggunakan iterator; dan satu elemen disalin ke waktu deque count . Beberapa konstruktor memungkinkan penggunaan kustom allocator untuk membuat elemen.

Typedefs

Nama Deskripsi
allocator_type Jenis yang mewakili allocator kelas untuk deque objek.
const_iterator Jenis yang menyediakan iterator akses acak yang dapat mengakses dan membaca elemen di dequeconst
const_pointer Jenis yang menyediakan penunjuk ke elemen dalam deque sebagai const.
const_reference Jenis yang menyediakan referensi ke elemen dalam deque untuk membaca dan operasi lain sebagai const.
const_reverse_iterator Jenis yang menyediakan iterator akses acak yang dapat mengakses dan membaca elemen di deque sebagai const. deque ditampilkan secara terbalik. Untuk informasi selengkapnya, lihat reverse_iterator Kelas
difference_type Jenis yang menyediakan perbedaan antara dua iterator akses acak yang merujuk ke elemen dalam hal yang sama deque.
iterator Jenis yang menyediakan iterator akses acak yang dapat membaca atau memodifikasi elemen apa pun dalam deque.
pointer Jenis yang menyediakan penunjuk ke elemen dalam deque.
reference Jenis yang menyediakan referensi ke elemen yang disimpan dalam deque.
reverse_iterator Jenis yang menyediakan iterator akses acak yang dapat membaca atau memodifikasi elemen dalam deque. deque ditampilkan dalam urutan terbalik.
size_type Jenis yang menghitung jumlah elemen dalam deque.
value_type Jenis yang mewakili jenis data yang disimpan dalam deque.

Fungsi

Nama Deskripsi
assign Menghapus elemen dari deque dan menyalin urutan elemen baru ke target deque.
at Mengembalikan referensi ke elemen di lokasi tertentu di deque.
back Mengembalikan referensi ke elemen terakhir dari deque.
begin Mengembalikan iterator akses acak yang membahas elemen pertama di deque.
cbegin Mengembalikan iterator const ke elemen pertama dalam deque.
cend Mengembalikan iterator akses const acak yang menunjuk tepat di luar akhir deque.
clear Menghapus semua elemen dari deque.
crbegin Mengembalikan iterator akses const acak ke elemen pertama dalam deque yang dilihat dalam urutan terbalik.
crend Mengembalikan iterator akses const acak ke elemen pertama dalam deque yang dilihat dalam urutan terbalik.
emplace Menyisipkan elemen yang dibangun di tempat pada deque posisi tertentu.
emplace_back Menambahkan elemen yang dibangun di tempat di akhir deque.
emplace_front Menambahkan elemen yang dibangun di tempat ke awal deque.
empty Mengembalikan true jika deque berisi elemen nol, dan false jika berisi satu atau beberapa elemen.
end Mengembalikan iterator akses acak yang menunjuk tepat di luar akhir deque.
erase Menghapus elemen atau rentang elemen dalam dari posisi tertentu deque .
front Mengembalikan referensi ke elemen pertama dalam deque.
get_allocator Mengembalikan salinan allocator objek yang digunakan untuk membuat deque.
insert Menyisipkan elemen, beberapa elemen, atau rentang elemen ke dalam pada deque posisi yang ditentukan.
max_size Mengembalikan panjang maksimum yang mungkin dari deque.
pop_back Menghapus elemen di akhir deque.
pop_front Menghapus elemen di awal deque.
push_back Menambahkan elemen ke akhir deque.
push_front Menambahkan elemen ke awal deque.
rbegin Mengembalikan iterator akses acak ke elemen pertama dalam reversed deque.
rend Mengembalikan iterator akses acak yang menunjuk tepat di luar elemen terakhir dalam terbalik deque.
resize Menentukan ukuran baru untuk deque.
shrink_to_fit Membuang kelebihan kapasitas.
size Mengembalikan jumlah elemen dalam deque.
swap Menukar elemen dua deques.

Operator

Nama Deskripsi
operator[] Mengembalikan referensi ke elemen pada deque posisi tertentu.
operator= Mengganti elemen deque dengan salinan dari yang lain deque.

allocator_type

Jenis yang mewakili kelas alokator untuk deque objek.

typedef Allocator allocator_type;

Keterangan

allocator_type adalah sinonim untuk parameter Allocatortemplat .

Contoh

Lihat contoh untuk get_allocator.

assign

Menghapus elemen dari deque dan menyalin sekumpulan elemen baru ke target deque.

template <class InputIterator>
void assign(
    InputIterator First,
    InputIterator Last);

void assign(
    size_type Count,
    const Type& Val);

void assign(initializer_list<Type> IList);

Parameter

First
Posisi elemen pertama dalam rentang elemen yang akan disalin dari argumen deque.

Last
Posisi elemen pertama di luar rentang elemen yang akan disalin dari argumen deque.

Count
Jumlah salinan elemen yang dimasukkan ke dequedalam .

Val
Nilai elemen yang dimasukkan ke dequedalam .

IList
yang initializer_list disisipkan ke dequedalam .

Keterangan

Setelah elemen yang ada dalam target deque dihapus, assign menyisipkan rentang elemen tertentu dari asli deque atau dari yang lain deque ke dalam target deque, atau menyisipkan salinan elemen baru dari nilai yang ditentukan ke dalam target deque.

Contoh

// deque_assign.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
#include <initializer_list>

int main()
{
    using namespace std;
    deque <int> c1, c2;
    deque <int>::const_iterator cIter;

    c1.push_back(10);
    c1.push_back(20);
    c1.push_back(30);
    c2.push_back(40);
    c2.push_back(50);
    c2.push_back(60);

    deque<int> d1{ 1, 2, 3, 4 };
    initializer_list<int> iList{ 5, 6, 7, 8 };
    d1.assign(iList);

    cout << "d1 = ";
    for (int i : d1)
        cout << i;
    cout << endl;

    cout << "c1 =";
    for (int i : c1)
        cout << i;
    cout << endl;

    c1.assign(++c2.begin(), c2.end());
    cout << "c1 =";
    for (int i : c1)
        cout << i;
    cout << endl;

    c1.assign(7, 4);
    cout << "c1 =";
    for (int i : c1)
        cout << i;
    cout << endl;
}
d1 = 5678c1 =102030c1 =5060c1 =4444444

at

Mengembalikan referensi ke elemen di lokasi tertentu di deque.

reference at(size_type pos);

const_reference at(size_type pos) const;

Parameter

pos
Subskrip (atau nomor posisi) elemen untuk dirujuk dalam deque.

Tampilkan Nilai

Jika pos lebih besar dari ukuran deque, at melempar pengecualian.

Keterangan

Jika nilai at pengembalian ditetapkan ke const_reference, deque objek tidak dapat dimodifikasi. Jika nilai at pengembalian ditetapkan ke reference, deque objek dapat dimodifikasi.

Contoh

// deque_at.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 20 );

   const int& i = c1.at( 0 );
   int& j = c1.at( 1 );
   cout << "The first element is " << i << endl;
   cout << "The second element is " << j << endl;
}
The first element is 10
The second element is 20

back

Mengembalikan referensi ke elemen terakhir dari deque.

reference back();
const_reference back() const;

Tampilkan Nilai

Elemen terakhir dari deque. deque Jika kosong, nilai yang dikembalikan tidak ditentukan.

Keterangan

Jika nilai back pengembalian ditetapkan ke const_reference, deque objek tidak dapat dimodifikasi. Jika nilai back pengembalian ditetapkan ke reference, deque objek dapat dimodifikasi.

Ketika dikompilasi dengan menggunakan _ITERATOR_DEBUG_LEVEL yang didefinisikan sebagai 1 atau 2, kesalahan runtime akan terjadi jika Anda mencoba mengakses elemen dalam kosong deque. Lihat Iterator yang Diperiksa untuk informasi selengkapnya.

Contoh

// deque_back.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 11 );

   int& i = c1.back( );
   const int& ii = c1.front( );

   cout << "The last integer of c1 is " << i << endl;
   i--;
   cout << "The next-to-last integer of c1 is " << ii << endl;
}
The last integer of c1 is 11
The next-to-last integer of c1 is 10

begin

Mengembalikan iterator yang menangani elemen pertama di deque.

const_iterator begin() const;
iterator begin();

Tampilkan Nilai

Iterator akses acak yang menangani elemen pertama di deque atau ke lokasi berhasil kosong deque.

Keterangan

Jika nilai begin pengembalian ditetapkan ke const_iterator, deque objek tidak dapat dimodifikasi. Jika nilai begin pengembalian ditetapkan ke iterator, deque objek dapat dimodifikasi.

Contoh

// deque_begin.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;
   deque <int>::iterator c1_Iter;
   deque <int>::const_iterator c1_cIter;

   c1.push_back( 1 );
   c1.push_back( 2 );

   c1_Iter = c1.begin( );
   cout << "The first element of c1 is " << *c1_Iter << endl;

*c1_Iter = 20;
   c1_Iter = c1.begin( );
   cout << "The first element of c1 is now " << *c1_Iter << endl;

   // The following line would be an error because iterator is const
   // *c1_cIter = 200;
}
The first element of c1 is 1
The first element of c1 is now 20

cbegin

Mengembalikan iterator const yang membahas elemen pertama dalam rentang.

const_iterator cbegin() const;

Tampilkan Nilai

Iterator const akses acak yang menunjuk pada elemen pertama rentang, atau lokasi tepat di luar akhir rentang kosong (untuk rentang kosong, cbegin() == cend()).

Keterangan

Dengan nilai cbeginpengembalian , elemen dalam rentang tidak dapat dimodifikasi.

Anda dapat menggunakan fungsi anggota ini sebagai pengganti begin() fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator. Biasanya, ini digunakan bersama dengan auto kata kunci pengurangan jenis, seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container untuk menjadi kontainer yang dapat dimodifikasi (non- const) dari segala jenis yang mendukung begin() dan cbegin().

auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();

// i2 is Container<T>::const_iterator

cend

Mengembalikan iterator const yang membahas lokasi tepat di luar elemen terakhir dalam rentang.

const_iterator cend() const;

Tampilkan Nilai

Iterator akses acak yang menunjuk tepat di luar akhir rentang.

Keterangan

cend digunakan untuk menguji apakah iterator telah melewati akhir rentangnya.

Anda dapat menggunakan fungsi anggota ini sebagai pengganti end() fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator. Biasanya, ini digunakan bersama dengan auto kata kunci pengurangan jenis, seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container untuk menjadi kontainer yang dapat dimodifikasi (non- const) dari segala jenis yang mendukung end() dan cend().

auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();

// i2 is Container<T>::const_iterator

Nilai yang dikembalikan oleh cend tidak boleh didereferensikan.

clear

Menghapus semua elemen dari deque.

void clear();

Contoh

// deque_clear.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 20 );
   c1.push_back( 30 );

   cout << "The size of the deque is initially " << c1.size( ) << endl;
   c1.clear( );
   cout << "The size of the deque after clearing is " << c1.size( ) << endl;
}
The size of the deque is initially 3
The size of the deque after clearing is 0

const_iterator

Jenis yang menyediakan iterator akses acak yang dapat mengakses dan membaca const elemen di deque.

typedef implementation-defined const_iterator;

Keterangan

Jenis const_iterator tidak dapat digunakan untuk mengubah nilai elemen.

Contoh

Lihat contoh untuk back.

const_pointer

Menyediakan penunjuk ke const elemen dalam deque.

typedef typename Allocator::const_pointer const_pointer;

Keterangan

Jenis const_pointer tidak dapat digunakan untuk mengubah nilai elemen. Lebih iterator umum digunakan untuk mengakses deque elemen.

const_reference

Jenis yang menyediakan referensi ke elemen yang const disimpan dalam deque untuk membaca dan melakukan const operasi.

typedef typename Allocator::const_reference const_reference;

Keterangan

Jenis const_reference tidak dapat digunakan untuk mengubah nilai elemen.

Contoh

// deque_const_ref.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 20 );

   const deque <int> c2 = c1;
   const int &i = c2.front( );
   const int &j = c2.back( );
   cout << "The first element is " << i << endl;
   cout << "The second element is " << j << endl;

   // The following line would cause an error as c2 is const
   // c2.push_back( 30 );
}
The first element is 10
The second element is 20

const_reverse_iterator

Jenis yang menyediakan iterator akses acak yang dapat membaca elemen apa pun const di deque.

typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

Keterangan

Jenis const_reverse_iterator tidak dapat memodifikasi nilai elemen dan digunakan untuk melakukan iterasi melalui secara deque terbalik.

Contoh

Lihat contoh untuk rbegin contoh cara mendeklarasikan dan menggunakan iterator.

crbegin

Mengembalikan iterator const ke elemen pertama dalam terbalik deque.

const_reverse_iterator crbegin() const;

Tampilkan Nilai

Iterator const akses acak terbalik yang membahas elemen pertama dalam terbalik deque atau mengatasi apa yang telah menjadi elemen terakhir dalam yang tidak terbalik deque.

Keterangan

Dengan nilai crbeginpengembalian , deque objek tidak dapat dimodifikasi.

Contoh

// deque_crbegin.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> v1;
   deque <int>::iterator v1_Iter;
   deque <int>::const_reverse_iterator v1_rIter;

   v1.push_back( 1 );
   v1.push_back( 2 );

   v1_Iter = v1.begin( );
   cout << "The first element of deque is "
        << *v1_Iter << "." << endl;

   v1_rIter = v1.crbegin( );
   cout << "The first element of the reversed deque is "
        << *v1_rIter << "." << endl;
}
The first element of deque is 1.
The first element of the reversed deque is 2.

crend

Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik deque.

const_reverse_iterator crend() const;

Tampilkan Nilai

Iterator const akses acak terbalik yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik deque (lokasi yang telah mendahului elemen pertama dalam yang tidak terbalik deque).

Keterangan

crend digunakan dengan terbalik deque seperti array::cend yang digunakan dengan deque.

Dengan nilai crend pengembalian (cocok diderementasi), deque objek tidak dapat dimodifikasi.

crend dapat digunakan untuk menguji apakah iterator terbalik telah mencapai akhir deque.

Nilai yang dikembalikan oleh crend tidak boleh didereferensikan.

Contoh

// deque_crend.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> v1;
   deque <int>::const_reverse_iterator v1_rIter;

   v1.push_back( 1 );
   v1.push_back( 2 );

   for ( v1_rIter = v1.rbegin( ) ; v1_rIter != v1.rend( ) ; v1_rIter++ )
      cout << *v1_rIter << endl;
}
2
1

deque

Membangun deque ukuran tertentu, atau dengan elemen nilai tertentu, atau dengan alokator tertentu, atau sebagai salinan semua atau bagian dari beberapa lainnya deque.

deque();

explicit deque(const Allocator& Al);
explicit deque(size_type Count);
deque(size_type Count, const Type& Val);

deque(
    size_type Count,
    const Type& Val,
    const Allocator& Al);

deque(const deque& Right);

template <class InputIterator>
deque(InputIterator First,  InputIterator Last);

template <class InputIterator>
deque(
   InputIterator First,
   InputIterator Last,
   const Allocator& Al);

deque(initializer_list<value_type> IList, const Allocator& Al);

Parameter

Al
Kelas alokator untuk digunakan dengan objek ini.

Count
Jumlah elemen dalam yang dibangun deque.

Val
Nilai elemen dalam yang dibangun deque.

Right
Yang deque dibangun deque adalah salinan.

First
Posisi elemen pertama dalam rentang elemen yang akan disalin.

Last
Posisi elemen pertama di luar rentang elemen yang akan disalin.

IList
yang initializer_list akan disalin.

Keterangan

Semua konstruktor menyimpan objek alokator (Al) dan menginisialisasi deque.

Dua konstruktor pertama menentukan inisial dequekosong ; yang kedua juga menentukan jenis alokator (_Al) yang akan digunakan.

Konstruktor ketiga menentukan pengulangan angka (count) elemen tertentu dari nilai default untuk kelas Type.

Konstruktor keempat dan kelima menentukan pengulanganCount () elemen nilai val.

Konstruktor keenam menentukan salinan deque Right.

Konstruktor ketujuh dan kedelapan dequemenyalin rentang [First, Last) .

Konstruktor ketujuh deque Rightmemindahkan .

Konstruktor kedelapan menyalin konten initializer_list.

Tidak ada konstruktor yang melakukan realokasi sementara.

Contoh

/ compile with: /EHsc
#include <deque>
#include <iostream>
#include <forward_list>

int main()
{
    using namespace std;

    forward_list<int> f1{ 1, 2, 3, 4 };

    f1.insert_after(f1.begin(), { 5, 6, 7, 8 });

    deque <int>::iterator c1_Iter, c2_Iter, c3_Iter, c4_Iter, c5_Iter, c6_Iter;

    // Create an empty deque c0
    deque <int> c0;

    // Create a deque c1 with 3 elements of default value 0
    deque <int> c1(3);

    // Create a deque c2 with 5 elements of value 2
    deque <int> c2(5, 2);

    // Create a deque c3 with 3 elements of value 1 and with the
    // allocator of deque c2
    deque <int> c3(3, 1, c2.get_allocator());

    // Create a copy, deque c4, of deque c2
    deque <int> c4(c2);

    // Create a deque c5 by copying the range c4[ first,  last)
    c4_Iter = c4.begin();
    c4_Iter++;
    c4_Iter++;
    deque <int> c5(c4.begin(), c4_Iter);

    // Create a deque c6 by copying the range c4[ first,  last) and
    // c2 with the allocator of deque
    c4_Iter = c4.begin();
    c4_Iter++;
    c4_Iter++;
    c4_Iter++;
    deque <int> c6(c4.begin(), c4_Iter, c2.get_allocator());

    // Create a deque c8 by copying the contents of an initializer_list
    // using brace initialization
    deque<int> c8({ 1, 2, 3, 4 });

    initializer_list<int> iList{ 5, 6, 7, 8 };
    deque<int> c9( iList);

    cout << "c1 = ";
    for (int i : c1)
        cout << i << " ";
    cout << endl;

    cout << "c2 = ";
    for (int i : c2)
        cout << i << " ";
    cout << endl;

    cout << "c3 = ";
    for (int i : c3)
        cout << i << " ";
    cout << endl;

    cout << "c4 = ";
    for (int i : c4)
        cout << i << " ";
    cout << endl;

    cout << "c5 = ";
    for (int i : c5)
        cout << i << " ";
    cout << endl;

    cout << "c6 = ";
    for (int i : c6)
        cout << i << " ";
    cout << endl;

    // Move deque c6 to deque c7
    deque <int> c7(move(c6));
    deque <int>::iterator c7_Iter;

    cout << "c7 =";
    for (int i : c7)
        cout << i << " ";
    cout << endl;

    cout << "c8 = ";
    for (int i : c8)
        cout << i << " ";
    cout << endl;

    cout << "c9 = ";
    for (int i : c9)
        cout << i << " ";
    cout << endl;

    int x = 3;
}
// deque_deque.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
    using namespace std;
   deque <int>::iterator c1_Iter, c2_Iter, c3_Iter, c4_Iter, c5_Iter, c6_Iter;

    // Create an empty deque c0
    deque <int> c0;

    // Create a deque c1 with 3 elements of default value 0
    deque <int> c1( 3 );

    // Create a deque c2 with 5 elements of value 2
    deque <int> c2( 5, 2 );

    // Create a deque c3 with 3 elements of value 1 and with the
    // allocator of deque c2
    deque <int> c3( 3, 1, c2.get_allocator( ) );

    // Create a copy, deque c4, of deque c2
    deque <int> c4( c2 );

    // Create a deque c5 by copying the range c4[ first,  last)
    c4_Iter = c4.begin( );
    c4_Iter++;
    c4_Iter++;
    deque <int> c5( c4.begin( ), c4_Iter );

    // Create a deque c6 by copying the range c4[ first,  last) and
    // c2 with the allocator of deque
    c4_Iter = c4.begin( );
   c4_Iter++;
   c4_Iter++;
   c4_Iter++;
   deque <int> c6( c4.begin( ), c4_Iter, c2.get_allocator( ) );

    // Create a deque c8 by copying the contents of an initializer_list
    // using brace initialization
    deque<int> c8({ 1, 2, 3, 4 });

        initializer_list<int> iList{ 5, 6, 7, 8 };
    deque<int> c9( iList);

    cout << "c1 = ";
    for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
        cout << *c1_Iter << " ";
    cout << endl;

    cout << "c2 = ";
    for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
        cout << *c2_Iter << " ";
    cout << endl;

    cout << "c3 = ";
    for ( c3_Iter = c3.begin( ); c3_Iter != c3.end( ); c3_Iter++ )
        cout << *c3_Iter << " ";
    cout << endl;

    cout << "c4 = ";
    for ( c4_Iter = c4.begin( ); c4_Iter != c4.end( ); c4_Iter++ )
        cout << *c4_Iter << " ";
    cout << endl;

    cout << "c5 = ";
    for ( c5_Iter = c5.begin( ); c5_Iter != c5.end( ); c5_Iter++ )
        cout << *c5_Iter << " ";
    cout << endl;

    cout << "c6 = ";
    for ( c6_Iter = c6.begin( ); c6_Iter != c6.end( ); c6_Iter++ )
        cout << *c6_Iter << " ";
    cout << endl;

    // Move deque c6 to deque c7
    deque <int> c7( move(c6) );
    deque <int>::iterator c7_Iter;

    cout << "c7 =" ;
    for ( c7_Iter = c7.begin( ) ; c7_Iter != c7.end( ) ; c7_Iter++ )
        cout << " " << *c7_Iter;
    cout << endl;

    cout << "c8 = ";
    for (int i : c8)
        cout << i << " ";
    cout << endl;

    cout << "c9 = ";
    or (int i : c9)
        cout << i << " ";
    cout << endl;
}

difference_type

Jenis yang menyediakan perbedaan antara dua iterator yang merujuk ke elemen dalam yang sama deque.

typedef typename Allocator::difference_type difference_type;

Keterangan

Juga difference_type dapat digambarkan sebagai jumlah elemen antara dua pointer.

Contoh

// deque_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <deque>
#include <algorithm>

int main( )
{
   using namespace std;

   deque <int> c1;
   deque <int>::iterator c1_Iter, c2_Iter;

   c1.push_back( 30 );
   c1.push_back( 20 );
   c1.push_back( 30 );
   c1.push_back( 10 );
   c1.push_back( 30 );
   c1.push_back( 20 );

   c1_Iter = c1.begin( );
   c2_Iter = c1.end( );

   deque <int>::difference_type df_typ1, df_typ2, df_typ3;

   df_typ1 = count( c1_Iter, c2_Iter, 10 );
   df_typ2 = count( c1_Iter, c2_Iter, 20 );
   df_typ3 = count( c1_Iter, c2_Iter, 30 );
   cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n";
   cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n";
   cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n";
}
The number '10' is in c1 collection 1 times.
The number '20' is in c1 collection 2 times.
The number '30' is in c1 collection 3 times.

emplace

Menyisipkan elemen yang dibangun di tempat pada deque posisi tertentu.

iterator emplace(
    const_iterator _Where,
    Type&& val);

Parameter

_Where
Posisi di deque mana elemen pertama disisipkan.

val
Nilai elemen yang dimasukkan ke dequedalam .

Tampilkan Nilai

Fungsi mengembalikan iterator yang menunjuk ke posisi di mana elemen baru dimasukkan ke dequedalam .

Keterangan

Setiap operasi penyisipan bisa mahal, lihat deque untuk diskusi deque performa.

Contoh

// deque_emplace.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> v1;
   deque <int>::iterator Iter;

   v1.push_back( 10 );
   v1.push_back( 20 );
   v1.push_back( 30 );

   cout << "v1 =" ;
   for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
      cout << " " << *Iter;
   cout << endl;

// initialize a deque of deques by moving v1
   deque < deque <int> > vv1;

   vv1.emplace( vv1.begin(), move( v1 ) );
   if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
      {
      cout << "vv1[0] =";
      for (Iter = vv1[0].begin( ); Iter != vv1[0].end( ); Iter++ )
         cout << " " << *Iter;
      cout << endl;
      }
}
v1 = 10 20 30
vv1[0] = 10 20 30

emplace_back

Menambahkan elemen yang dibangun di tempat di akhir deque.

void emplace_back(Type&& val);

Parameter

val
Elemen ditambahkan ke akhir deque.

Contoh

// deque_emplace_back.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> v1;

   v1.push_back( 1 );
   if ( v1.size( ) != 0 )
      cout << "Last element: " << v1.back( ) << endl;

   v1.push_back( 2 );
   if ( v1.size( ) != 0 )
      cout << "New last element: " << v1.back( ) << endl;

// initialize a deque of deques by moving v1
   deque < deque <int> > vv1;

   vv1.emplace_back( move( v1 ) );
   if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
      cout << "Moved last element: " << vv1[0].back( ) << endl;
}
Last element: 1
New last element: 2
Moved last element: 2

emplace_front

Menambahkan elemen yang dibangun di tempat di akhir deque.

void emplace_front(Type&& val);

Parameter

val
Elemen ditambahkan ke awal deque.

Contoh

// deque_emplace_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> v1;

   v1.push_back( 1 );
   if ( v1.size( ) != 0 )
      cout << "Last element: " << v1.back( ) << endl;

   v1.push_back( 2 );
   if ( v1.size( ) != 0 )
      cout << "New last element: " << v1.back( ) << endl;

// initialize a deque of deques by moving v1
   deque < deque <int> > vv1;

   vv1.emplace_front( move( v1 ) );
   if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
      cout << "Moved last element: " << vv1[0].back( ) << endl;
}
Last element: 1
New last element: 2
Moved last element: 2

empty

Menguji apakah kosong deque .

bool empty() const;

Tampilkan Nilai

truedeque jika kosong; false jika deque tidak kosong.

Contoh

// deque_empty.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   if ( c1.empty( ) )
      cout << "The deque is empty." << endl;
   else
      cout << "The deque is not empty." << endl;
}
The deque is not empty.

end

Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam deque.

const_iterator end() const;

iterator end();

Tampilkan Nilai

Iterator akses acak yang membahas lokasi yang menggantikan elemen terakhir dalam deque. deque Jika kosong, maka deque::end == deque::begin.

Keterangan

end digunakan untuk menguji apakah iterator telah mencapai akhir deque.

Contoh

// deque_end.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;
   deque <int>::iterator c1_Iter;

   c1.push_back( 10 );
   c1.push_back( 20 );
   c1.push_back( 30 );

   c1_Iter = c1.end( );
   c1_Iter--;
   cout << "The last integer of c1 is " << *c1_Iter << endl;

   c1_Iter--;
   *c1_Iter = 400;
   cout << "The new next-to-last integer of c1 is " << *c1_Iter << endl;

   // If a const iterator had been declared instead with the line:
   // deque <int>::const_iterator c1_Iter;
   // an error would have resulted when inserting the 400

   cout << "The deque is now:";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << " " << *c1_Iter;
}
The last integer of c1 is 30
The new next-to-last integer of c1 is 400
The deque is now: 10 400 30

erase

Menghapus elemen atau rentang elemen dalam dari posisi tertentu deque .

iterator erase(iterator _Where);

iterator erase(iterator first, iterator last);

Parameter

_Where
Posisi elemen yang akan dihapus dari deque.

first
Posisi elemen pertama dihapus dari deque.

last
Posisi tepat di luar elemen terakhir yang dihapus dari deque.

Tampilkan Nilai

Iterator akses acak yang menunjuk elemen pertama yang tersisa di luar elemen apa pun yang dihapus, atau penunjuk ke akhir jika tidak ada elemen tersebut deque .

Keterangan

erase tidak pernah melemparkan pengecualian.

Contoh

// deque_erase.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;
   deque <int>::iterator Iter;

   c1.push_back( 10 );
   c1.push_back( 20 );
   c1.push_back( 30 );
   c1.push_back( 40 );
   c1.push_back( 50 );
   cout << "The initial deque is: ";
   for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
      cout << *Iter << " ";
   cout << endl;
   c1.erase( c1.begin( ) );
   cout << "After erasing the first element, the deque becomes:  ";
   for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
      cout << *Iter << " ";
   cout << endl;
   Iter = c1.begin( );
   Iter++;
   c1.erase( Iter, c1.end( ) );
   cout << "After erasing all elements but the first, deque becomes: ";
   for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
      cout << *Iter << " ";
   cout << endl;
}
The initial deque is: 10 20 30 40 50
After erasing the first element, the deque becomes:  20 30 40 50
After erasing all elements but the first, deque becomes: 20

front

Mengembalikan referensi ke elemen pertama dalam deque.

reference front();

const_reference front() const;

Tampilkan Nilai

deque Jika kosong, pengembalian tidak ditentukan.

Keterangan

Jika nilai front pengembalian ditetapkan ke const_reference, deque objek tidak dapat dimodifikasi. Jika nilai front pengembalian ditetapkan ke reference, deque objek dapat dimodifikasi.

Ketika dikompilasi dengan menggunakan _ITERATOR_DEBUG_LEVEL yang didefinisikan sebagai 1 atau 2, kesalahan runtime akan terjadi jika Anda mencoba mengakses elemen dalam kosong deque. Lihat Iterator yang Diperiksa untuk informasi selengkapnya.

Contoh

// deque_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 11 );

   int& i = c1.front( );
   const int& ii = c1.front( );

   cout << "The first integer of c1 is " << i << endl;
   i++;
   cout << "The second integer of c1 is " << ii << endl;
}
The first integer of c1 is 10
The second integer of c1 is 11

get_allocator

Mengembalikan salinan objek alokator yang digunakan untuk membuat deque.

Allocator get_allocator() const;

Tampilkan Nilai

Alokator yang digunakan oleh deque.

Keterangan

Alokator untuk deque kelas menentukan bagaimana kelas mengelola penyimpanan. Alokator default yang disediakan dengan kelas kontainer Pustaka Standar C++ cukup untuk sebagian besar kebutuhan pemrograman. Menulis dan menggunakan kelas alokator Anda sendiri adalah topik C++ tingkat lanjut.

Contoh

// deque_get_allocator.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   // The following lines declare objects that use the default allocator.
   deque <int> c1;
   deque <int, allocator<int> > c2 = deque <int, allocator<int> >( allocator<int>( ) );

   // c3 will use the same allocator class as c1
   deque <int> c3( c1.get_allocator( ) );

   deque <int>::allocator_type xlst = c1.get_allocator( );
   // You can now call functions on the allocator class used by c1
}

insert

Menyisipkan elemen atau sejumlah elemen atau rentang elemen ke dalam pada deque posisi yang ditentukan.

iterator insert(
    const_iterator Where,
    const Type& Val);

iterator insert(
    const_iterator Where,
    Type&& Val);

void insert(
    iterator Where,
    size_type Count,
    const Type& Val);

template <class InputIterator>
void insert(
    iterator Where,
    InputIterator First,
    InputIterator Last);

iterator insert(
    iterator Where,initializer_list<Type>
IList);

Parameter

Where
Posisi dalam target deque tempat elemen pertama dimasukkan.

Val
Nilai elemen yang dimasukkan ke dequedalam .

Count
Jumlah elemen yang dimasukkan ke dequedalam .

First
Posisi elemen pertama dalam rentang elemen dalam argumen deque yang akan disalin.

Last
Posisi elemen pertama di luar rentang elemen dalam argumen deque yang akan disalin.

IList
Elemen initializer_list yang akan disisipkan.

Tampilkan Nilai

Dua fungsi sisipan pertama mengembalikan iterator yang menunjuk ke posisi di mana elemen baru dimasukkan ke dequedalam .

Keterangan

Setiap operasi penyisipan bisa mahal.

iterator

Jenis yang menyediakan iterator akses acak yang dapat membaca atau memodifikasi elemen apa pun dalam deque.

typedef implementation-defined iterator;

Keterangan

Jenis iterator dapat digunakan untuk mengubah nilai elemen.

Contoh

Lihat contoh untuk begin.

max_size

Mengembalikan panjang dequemaksimum .

size_type max_size() const;

Tampilkan Nilai

Panjang maksimum yang mungkin dari deque.

Contoh

// deque_max_size.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;
   deque <int>::size_type i;

   i = c1.max_size( );
   cout << "The maximum possible length of the deque is " << i << "." << endl;
}

operator[]

Mengembalikan referensi ke elemen pada deque posisi tertentu.

reference operator[](size_type pos);

const_reference operator[](size_type pos) const;

Parameter

pos
Posisi elemen yang deque akan dirujuk.

Tampilkan Nilai

Referensi ke elemen yang posisinya ditentukan dalam argumen. Jika posisi yang ditentukan lebih besar dari dequeukuran , hasilnya tidak ditentukan.

Keterangan

Jika nilai operator[] pengembalian ditetapkan ke const_reference, deque objek tidak dapat dimodifikasi. Jika nilai operator[] pengembalian ditetapkan ke reference, deque objek dapat dimodifikasi.

Ketika dikompilasi dengan menggunakan _ITERATOR_DEBUG_LEVEL yang didefinisikan sebagai 1 atau 2, kesalahan runtime akan terjadi jika Anda mencoba mengakses elemen di luar batas deque. Lihat Iterator yang Diperiksa untuk informasi selengkapnya.

Contoh

// deque_op_ref.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 20 );
   cout << "The first integer of c1 is " << c1[0] << endl;
   int& i = c1[1];
   cout << "The second integer of c1 is " << i << endl;
}
The first integer of c1 is 10
The second integer of c1 is 20

operator=

Mengganti elemen ini deque menggunakan elemen dari elemen lain deque.

deque& operator=(const deque& right);

deque& operator=(deque&& right);

Parameter

right
yang deque menyediakan konten baru.

Keterangan

Penimpaan pertama menyalin elemen ke ini deque dari right, sumber penugasan. Penimpaan kedua memindahkan elemen ke ini deque dari right.

Elemen yang terkandung dalam ini deque sebelum operator dijalankan dihapus.

Contoh

// deque_operator_as.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
using namespace std;

typedef deque<int> MyDeque;

template<typename MyDeque> struct S;

template<typename MyDeque> struct S<MyDeque&> {
  static void show( MyDeque& d ) {
    MyDeque::const_iterator iter;
    for (iter = d.cbegin(); iter != d.cend(); iter++)
       cout << *iter << " ";
    cout << endl;
  }
};

template<typename MyDeque> struct S<MyDeque&&> {
  static void show( MyDeque&& d ) {
    MyDeque::const_iterator iter;
    for (iter = d.cbegin(); iter != d.cend(); iter++)
       cout << *iter << " ";
cout << " via unnamed rvalue reference " << endl;
  }
};

int main( )
{
   MyDeque d1, d2;

   d1.push_back(10);
   d1.push_back(20);
   d1.push_back(30);
   d1.push_back(40);
   d1.push_back(50);

   cout << "d1 = " ;
   S<MyDeque&>::show( d1 );

   d2 = d1;
   cout << "d2 = ";
   S<MyDeque&>::show( d2 );

   cout << "     ";
   S<MyDeque&&>::show ( move< MyDeque& > (d1) );
}

pointer

Menyediakan penunjuk ke elemen dalam deque.

typedef typename Allocator::pointer pointer;

Keterangan

Jenis pointer dapat digunakan untuk mengubah nilai elemen. Lebih iterator umum digunakan untuk mengakses deque elemen.

pop_back

Menghapus elemen di akhir deque.

void pop_back();

Keterangan

Elemen terakhir tidak boleh kosong. pop_back tidak pernah melemparkan pengecualian.

Contoh

// deque_pop_back.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 1 );
   c1.push_back( 2 );
   cout << "The first element is: " << c1.front( ) << endl;
   cout << "The last element is: " << c1.back( ) << endl;

   c1.pop_back( );
   cout << "After deleting the element at the end of the deque, the "
      "last element is: " << c1.back( ) << endl;
}
The first element is: 1
The last element is: 2
After deleting the element at the end of the deque, the last element is: 1

pop_front

Menghapus elemen di awal deque.

void pop_front();

Keterangan

Elemen pertama tidak boleh kosong. pop_front tidak pernah melemparkan pengecualian.

Contoh

// deque_pop_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 1 );
   c1.push_back( 2 );
   cout << "The first element is: " << c1.front( ) << endl;
   cout << "The second element is: " << c1.back( ) << endl;

   c1.pop_front( );
   cout << "After deleting the element at the beginning of the "
      "deque, the first element is: " << c1.front( ) << endl;
}
The first element is: 1
The second element is: 2
After deleting the element at the beginning of the `deque`, the first element is: 2

push_back

Menambahkan elemen ke akhir deque.

void push_back(const Type& val);

void push_back(Type&& val);

Parameter

val
Elemen ditambahkan ke akhir deque.

Keterangan

Jika pengecualian dilemparkan, dibiarkan deque tidak diubah dan pengecualian ditumbuhi kembali.

push_front

Menambahkan elemen ke awal deque.

void push_front(const Type& val);
void push_front(Type&& val);

Parameter

val
Elemen ditambahkan ke awal deque.

Keterangan

Jika pengecualian dilemparkan, dibiarkan deque tidak diubah dan pengecualian ditumbuhi kembali.

Contoh

// deque_push_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
#include <string>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_front( 1 );
   if ( c1.size( ) != 0 )
      cout << "First element: " << c1.front( ) << endl;

   c1.push_front( 2 );
   if ( c1.size( ) != 0 )
      cout << "New first element: " << c1.front( ) << endl;

// move initialize a deque of strings
   deque <string> c2;
   string str("a");

   c2.push_front( move( str ) );
   cout << "Moved first element: " << c2.front( ) << endl;
}
First element: 1
New first element: 2
Moved first element: a

rbegin

Mengembalikan iterator ke elemen pertama dalam terbalik deque.

const_reverse_iterator rbegin() const;

reverse_iterator rbegin();

Tampilkan Nilai

Iterator akses acak terbalik yang membahas elemen pertama dalam terbalik deque atau mengatasi apa yang telah menjadi elemen terakhir dalam yang tidak terbalik deque.

Keterangan

rbegin digunakan dengan terbalik deque seperti begin yang digunakan dengan deque.

Jika nilai rbegin pengembalian ditetapkan ke const_reverse_iterator, deque objek tidak dapat dimodifikasi. Jika nilai rbegin pengembalian ditetapkan ke reverse_iterator, deque objek dapat dimodifikasi.

rbegin dapat digunakan untuk melakukan iterasi melalui mundur deque .

Contoh

// deque_rbegin.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;
   deque <int>::iterator c1_Iter;
   deque <int>::reverse_iterator c1_rIter;

   // If the following line had replaced the line above, an error
   // would have resulted in the line modifying an element
   // (commented below) because the iterator would have been const
   // deque <int>::const_reverse_iterator c1_rIter;

   c1.push_back( 10 );
   c1.push_back( 20 );
   c1.push_back( 30 );

   c1_rIter = c1.rbegin( );
   cout << "Last element in the deque is " << *c1_rIter << "." << endl;

   cout << "The deque contains the elements: ";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << *c1_Iter << " ";
   cout << "in that order.";
   cout << endl;

   // rbegin can be used to iterate through a deque in reverse order
   cout << "The reversed deque is: ";
   for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
      cout << *c1_rIter << " ";
   cout << endl;

   c1_rIter = c1.rbegin( );
   *c1_rIter = 40;  // This would have caused an error if a
                    // const_reverse iterator had been declared as
                    // noted above
   cout << "Last element in deque is now " << *c1_rIter << "." << endl;
}
Last element in the deque is 30.
The deque contains the elements: 10 20 30 in that order.
The reversed deque is: 30 20 10
Last element in deque is now 40.

reference

Jenis yang menyediakan referensi ke elemen yang disimpan dalam deque.

typedef typename Allocator::reference reference;

Contoh

// deque_reference.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 20 );

   const int &i = c1.front( );
   int &j = c1.back( );
   cout << "The first element is " << i << endl;
   cout << "The second element is " << j << endl;
}
The first element is 10
The second element is 20

rend

Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik deque.

const_reverse_iterator rend() const;

reverse_iterator rend();

Tampilkan Nilai

Iterator akses acak terbalik yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik deque (lokasi yang telah mendahului elemen pertama dalam yang tidak terbalik deque).

Keterangan

rend digunakan dengan terbalik deque seperti end yang digunakan dengan deque.

Jika nilai rend pengembalian ditetapkan ke const_reverse_iterator, deque objek tidak dapat dimodifikasi. Jika nilai rend pengembalian ditetapkan ke reverse_iterator, deque objek dapat dimodifikasi.

rend dapat digunakan untuk menguji apakah iterator terbalik telah mencapai akhir deque.

Nilai yang dikembalikan oleh rend tidak boleh didereferensikan.

Contoh

// deque_rend.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;

   deque <int> c1;
   deque <int>::iterator c1_Iter;
   deque <int>::reverse_iterator c1_rIter;
   // If the following line had replaced the line above, an error
   // would have resulted in the line modifying an element
   // (commented below) because the iterator would have been const
   // deque <int>::const_reverse_iterator c1_rIter;

   c1.push_back( 10 );
   c1.push_back( 20 );
   c1.push_back( 30 );

   c1_rIter = c1.rend( );
   c1_rIter --; // Decrementing a reverse iterator moves it forward
                // in the deque (to point to the first element here)
   cout << "The first element in the deque is: " << *c1_rIter << endl;

   cout << "The deque is: ";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << *c1_Iter << " ";
   cout << endl;

   // rend can be used to test if an iteration is through all of
   // the elements of a reversed deque
   cout << "The reversed deque is: ";
   for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
      cout << *c1_rIter << " ";
   cout << endl;

   c1_rIter = c1.rend( );
   c1_rIter--; // Decrementing the reverse iterator moves it backward
               // in the reversed deque (to the last element here)
   *c1_rIter = 40; // This modification of the last element would
                   // have caused an error if a const_reverse
                   // iterator had been declared (as noted above)
   cout << "The modified reversed deque is: ";
   for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
      cout << *c1_rIter << " ";
   cout << endl;
}
The first element in the deque is: 10
The deque is: 10 20 30
The reversed deque is: 30 20 10
The modified reversed deque is: 30 20 40

resize

Menentukan ukuran baru untuk deque.

void resize(size_type _Newsize);

void resize(size_type _Newsize, Type val);

Parameter

_Newsize
Ukuran baru .deque

val
Nilai elemen baru yang akan ditambahkan ke deque jika ukuran baru lebih besar dari ukuran aslinya. Jika nilai dihilangkan, elemen baru diberi nilai default untuk kelas .

Keterangan

dequeJika elemen kurang size dari _Newsize, ditambahkan ke deque sampai mencapai ukuran _Newsize.

dequeJika 's size lebih besar dari _Newsize, elemen yang paling dekat dengan akhir deque dihapus sampai deque mencapai ukuran _Newsize.

Jika ukuran deque saat ini sama dengan _Newsize, tidak ada tindakan yang diambil.

size mencerminkan ukuran saat ini dari deque.

Contoh

// deque_resize.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;

   c1.push_back( 10 );
   c1.push_back( 20 );
   c1.push_back( 30 );

   c1.resize( 4,40 );
   cout << "The size of c1 is: " << c1.size( ) << endl;
   cout << "The value of the last element is " << c1.back( ) << endl;

   c1.resize( 5 );
   cout << "The size of c1 is now: " << c1.size( ) << endl;
   cout << "The value of the last element is now " << c1.back( ) << endl;

   c1.resize( 2 );
   cout << "The reduced size of c1 is: " << c1.size( ) << endl;
   cout << "The value of the last element is now " << c1.back( ) << endl;
}
The size of c1 is: 4
The value of the last element is 40
The size of c1 is now: 5
The value of the last element is now 0
The reduced size of c1 is: 2
The value of the last element is now 20

reverse_iterator

Jenis yang menyediakan iterator akses acak yang dapat membaca atau memodifikasi elemen dalam terbalik deque.

typedef std::reverse_iterator<iterator> reverse_iterator;

Keterangan

Jenis reverse_iterator digunakan untuk melakukan iterasi melalui deque.

Contoh

Lihat contoh untuk rbegin.

shrink_to_fit

Membuang kelebihan kapasitas.

void shrink_to_fit();

Keterangan

Tidak ada cara portabel untuk menentukan apakah shrink_to_fit mengurangi penyimpanan yang dequedigunakan oleh .

Contoh

// deque_shrink_to_fit.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> v1;
   //deque <int>::iterator Iter;

   v1.push_back( 1 );
   v1.push_back( 2 );
   cout << "Current size of v1 = "
      << v1.size( ) << endl;
   v1.shrink_to_fit();
   cout << "Current size of v1 = "
      << v1.size( ) << endl;
}
Current size of v1 = 1
Current size of v1 = 1

size

Mengembalikan jumlah elemen dalam deque.

size_type size() const;

Tampilkan Nilai

Panjang saat ini dari deque.

Contoh

// deque_size.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1;
   deque <int>::size_type i;

   c1.push_back( 1 );
   i = c1.size( );
   cout << "The deque length is " << i << "." << endl;

   c1.push_back( 2 );
   i = c1.size( );
   cout << "The deque length is now " << i << "." << endl;
}
The deque length is 1.
The deque length is now 2.

size_type

Jenis yang menghitung jumlah elemen dalam deque.

typedef typename Allocator::size_type size_type;

Contoh

Lihat contoh untuk size.

swap

Menukar elemen dari dua deque.

void swap(deque<Type, Allocator>& right);

friend void swap(deque<Type, Allocator>& left, deque<Type, Allocator>& right) template <class Type, class Allocator>
void swap(deque<Type, Allocator>& left, deque<Type, Allocator>& right);

Parameter

right
yang deque menyediakan elemen yang akan ditukar, atau deque yang elemennya akan ditukar dengan elemen deque left.

left
Elemen deque yang akan ditukar dengan elemen deque right.

Contoh

// deque_swap.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>

int main( )
{
   using namespace std;
   deque <int> c1, c2, c3;
   deque <int>::iterator c1_Iter;

   c1.push_back( 1 );
   c1.push_back( 2 );
   c1.push_back( 3 );
   c2.push_back( 10 );
   c2.push_back( 20 );
   c3.push_back( 100 );

   cout << "The original deque c1 is:";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << " " << *c1_Iter;
   cout << endl;

   c1.swap( c2 );

   cout << "After swapping with c2, deque c1 is:";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << " " << *c1_Iter;
   cout << endl;

   swap( c1,c3 );

   cout << "After swapping with c3, deque c1 is:";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << " " << *c1_Iter;
   cout << endl;

   swap<>(c1, c2);
   cout << "After swapping with c2, deque c1 is:";
   for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
      cout << " " << *c1_Iter;
   cout << endl;
}
The original deque c1 is: 1 2 3
After swapping with c2, deque c1 is: 10 20
After swapping with c3, deque c1 is: 100
After swapping with c2, deque c1 is: 1 2 3

value_type

Jenis yang mewakili jenis data yang disimpan dalam deque.

typedef typename Allocator::value_type value_type;

Keterangan

value_type adalah sinonim untuk parameter Typetemplat .

Contoh

// deque_value_type.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
   using namespace std;
   deque<int>::value_type AnInt;
   AnInt = 44;
   cout << AnInt << endl;
}
44

Lihat juga

Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++