Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
stackmendukung 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 menggunakanstackkelas .Kelas ini
queuemendukung 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 hanyafrontelemen danbackdengan cara ini adalah alasan untuk menggunakanqueuekelas .Kelas
priority_queuemengurutkan 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++