Bagikan melalui


queue Kelas

Kelas adaptor kontainer templat yang menyediakan pembatasan fungsionalitas untuk beberapa jenis kontainer yang mendasar, membatasi akses ke elemen depan dan belakang. Elemen dapat ditambahkan di bagian belakang atau dihapus dari depan, dan elemen dapat diperiksa di salah satu ujung queue.

Sintaks

template <class Type, class Container = deque <Type>>
class queue

Parameter

Type
Jenis data elemen yang akan disimpan di queue.

Container
Jenis kontainer yang mendasar yang digunakan untuk mengimplementasikan queue.

Keterangan

Elemen kelas Type yang ditetapkan dalam parameter templat pertama objek queue identik dengan dan harus cocok dengan value_type jenis elemen dalam kelas Container kontainer yang mendasar yang ditetapkan oleh parameter templat kedua. harus dapat ditetapkan, sehingga dimungkinkan untuk menyalin objek dari jenis tersebut Type dan untuk menetapkan nilai ke variabel jenis tersebut.

Kelas kontainer yang mendasar yang sesuai untuk menyertakan dan , atau kontainer urutan lainnya yang mendukung operasi front, , backpush_back, dan pop_front.listdeque queue Kelas kontainer yang mendasarinya dienkapsulasi dalam adaptor kontainer, yang hanya mengekspos set terbatas dari fungsi anggota kontainer urutan sebagai antarmuka publik.

Objek queue sebanding jika dan hanya jika elemen kelas Type sebanding, dan kurang sebanding jika dan hanya jika elemen kelas Type kurang dari sebanding.

Ada tiga jenis adaptor kontainer yang ditentukan oleh Pustaka Standar C++: stack, queue, dan priority_queue. Masing-masing membatasi fungsionalitas beberapa kelas kontainer yang mendasar untuk menyediakan antarmuka yang dikontrol dengan tepat ke struktur data standar.

  • Kelas ini stack mendukung struktur data last-in, first-out (LIFO). Analog yang baik untuk diingat adalah tumpukan piring. Elemen (pelat) dapat dimasukkan, diperiksa, atau dihapus hanya dari bagian atas tumpukan, yang merupakan elemen terakhir di akhir kontainer dasar. Pembatasan untuk mengakses hanya elemen teratas adalah alasan untuk menggunakan stack kelas .

  • Kelas ini queue mendukung struktur data first-in, first-out (FIFO). Analog yang baik untuk diingat adalah orang-orang yang mengandalkan teller bank. Elemen (orang) dapat ditambahkan ke bagian belakang garis dan dihapus dari bagian depan garis. Baik bagian depan maupun belakang garis dapat diperiksa. Pembatasan untuk mengakses hanya front elemen dan back dengan cara ini adalah alasan untuk menggunakan queue kelas .

  • Kelas priority_queue mengurutkan elemennya sehingga elemen terbesar selalu berada di posisi atas. Ini mendukung penyisipan elemen dan inspeksi dan penghapusan elemen teratas. Analog yang baik untuk diingat adalah orang-orang yang berbaris di mana mereka diatur berdasarkan usia, tinggi, atau beberapa kriteria lainnya.

Anggota

Konstruktor

Nama Deskripsi
queue Membuat queue yang kosong atau yang merupakan salinan objek kontainer dasar.

Typedefs

Nama Deskripsi
container_type Jenis yang menyediakan kontainer dasar untuk disesuaikan oleh queue.
size_type Jenis bilangan bulat yang tidak ditandatangani yang dapat mewakili jumlah elemen dalam queue.
value_type Jenis yang mewakili jenis objek yang disimpan sebagai elemen dalam queue.

Fungsi

Nama Deskripsi
back Mengembalikan referensi ke elemen terakhir dan yang terakhir ditambahkan di bagian queuebelakang .
empty Menguji apakah queue kosong.
front Mengembalikan referensi ke elemen pertama di bagian queuedepan .
pop Menghapus elemen dari depan queue.
push Menambahkan elemen ke bagian belakang queue.
size Mengembalikan jumlah elemen dalam queue.

back

Mengembalikan referensi ke elemen terakhir dan yang terakhir ditambahkan di bagian queuebelakang .

reference back();

const_reference back() const;

Tampilkan Nilai

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

Keterangan

Jika nilai back pengembalian ditetapkan ke const_reference, queue objek tidak dapat dimodifikasi. Jika nilai back pengembalian ditetapkan ke reference, queue 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 queue. Lihat Iterator yang Diperiksa untuk informasi selengkapnya.

Contoh

// queue_back.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 11 );

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

   cout << "The integer at the back of queue q1 is " << i
        << "." << endl;
   cout << "The integer at the front of queue q1 is " << ii
        << "." << endl;
}

container_type

Jenis yang menyediakan kontainer dasar yang akan diadaptasi.

typedef Container container_type;

Keterangan

Jenisnya adalah sinonim untuk parameter Containertemplat . Dua kelas kontainer urutan Pustaka Standar C++ — list kelas dan kelas default deque —memenuhi persyaratan untuk digunakan sebagai kontainer dasar untuk queue objek. Jenis yang ditentukan pengguna yang memenuhi persyaratan juga dapat digunakan.

Untuk informasi selengkapnya tentang Container, lihat bagian queue Class Keterangan topik.

Contoh

Lihat contoh untuk queue contoh cara mendeklarasikan dan menggunakan container_type.

empty

Menguji apakah kosong queue .

bool empty() const;

Tampilkan Nilai

truequeue jika kosong; false jika queue tidak ada.

Contoh

// queue_empty.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
using namespace std;

   // Declares queues with default deque base container
   queue <int> q1, q2;

   q1.push( 1 );

   if ( q1.empty( ) )
      cout << "The queue q1 is empty." << endl;
   else
      cout << "The queue q1 is not empty." << endl;

   if ( q2.empty( ) )
      cout << "The queue q2 is empty." << endl;
   else
      cout << "The queue q2 is not empty." << endl;
}
The queue q1 is not empty.
The queue q2 is empty.

front

Mengembalikan referensi ke elemen pertama di bagian queuedepan .

reference front();

const_reference front() const;

Tampilkan Nilai

Elemen pertama dari queue. queue Jika kosong, nilai yang dikembalikan tidak ditentukan.

Keterangan

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

Fungsi anggota mengembalikan reference ke elemen pertama dari urutan yang dikontrol, yang harus tidak ada.

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

Contoh

// queue_front.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main() {
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   int& ii = q1.back( );
   int& iii = q1.front( );

   cout << "The integer at the back of queue q1 is " << ii
        << "." << endl;
   cout << "The integer at the front of queue q1 is " << iii
        << "." << endl;
}

pop

Menghapus elemen dari depan queue.

void pop();

Keterangan

queue harus tidak ada untuk menerapkan fungsi anggota. Bagian atas queue adalah posisi yang ditempati oleh elemen yang paling baru ditambahkan dan merupakan elemen terakhir di akhir kontainer.

Contoh

// queue_pop.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1, s2;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   i = q1.front( );
   cout << "The element at the front of the queue is "
        << i << "." << endl;

   q1.pop( );

   i = q1.size( );
   cout << "After a pop the queue length is "
        << i << "." << endl;

   i = q1. front ( );
   cout << "After a pop, the element at the front of the queue is "
        << i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.
After a pop the queue length is 2.
After a pop, the element at the front of the queue is 20.

push

Menambahkan elemen ke bagian belakang queue.

void push(const Type& val);

Parameter

val
Elemen ditambahkan ke bagian queuebelakang .

Keterangan

Bagian belakang queue adalah posisi yang ditempati oleh elemen yang terakhir ditambahkan dan merupakan elemen terakhir di akhir kontainer.

Contoh

// queue_push.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   i = q1.front( );
   cout << "The element at the front of the queue is "
        << i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.

queue

Membuat queue yang kosong atau yang merupakan salinan objek kontainer dasar.

queue();

explicit queue(const container_type& right);

Parameter

right
Kontainer const yang dibangun queue akan menjadi salinan.

Keterangan

Kontainer dasar default untuk queue adalah deque. Anda juga dapat menentukan list sebagai kontainer dasar, tetapi Anda tidak dapat menentukan vector, karena tidak memiliki fungsi anggota yang diperlukan pop_front .

Contoh

// queue_queue.cpp
// compile with: /EHsc
#include <queue>
#include <vector>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   // Declares queue with default deque base container
   queue <char> q1;

   // Explicitly declares a queue with deque base container
   queue <char, deque<char> > q2;

   // These lines don't cause an error, even though they
   // declares a queue with a vector base container
   queue <int, vector<int> > q3;
   q3.push( 10 );
   // but the following would cause an error because vector has
   // no pop_front member function
   // q3.pop( );

   // Declares a queue with list base container
   queue <int, list<int> > q4;

   // The second member function copies elements from a container
   list<int> li1;
   li1.push_back( 1 );
   li1.push_back( 2 );
   queue <int, list<int> > q5( li1 );
   cout << "The element at the front of queue q5 is "
        << q5.front( ) << "." << endl;
   cout << "The element at the back of queue q5 is "
        << q5.back( ) << "." << endl;
}
The element at the front of queue q5 is 1.
The element at the back of queue q5 is 2.

size

Mengembalikan jumlah elemen dalam queue.

size_type size() const;

Tampilkan Nilai

Panjang saat ini dari queue.

Contoh

// queue_size.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1, q2;
   queue <int>::size_type i;

   q1.push( 1 );
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   q1.push( 2 );
   i = q1.size( );
   cout << "The queue length is now " << i << "." << endl;
}
The queue length is 1.
The queue length is now 2.

size_type

Jenis bilangan bulat yang tidak ditandatangani yang dapat mewakili jumlah elemen dalam queue.

typedef typename Container::size_type size_type;

Keterangan

Jenisnya adalah sinonim untuk size_type kontainer dasar yang diadaptasi oleh queue.

Contoh

Lihat contoh untuk queue::front contoh cara mendeklarasikan dan menggunakan size_type.

value_type

Jenis yang mewakili jenis objek yang disimpan sebagai elemen dalam queue.

typedef typename Container::value_type value_type;

Keterangan

Jenisnya adalah sinonim untuk value_type kontainer dasar yang diadaptasi oleh queue.

Contoh

// queue_value_type.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
using namespace std;

   // Declares queues with default deque base container
   queue<int>::value_type AnInt;

   AnInt = 69;
   cout << "The value_type is AnInt = " << AnInt << endl;

   queue<int> q1;
   q1.push(AnInt);
   cout << "The element at the front of the queue is "
        << q1.front( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the front of the queue is 69.

Lihat juga

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