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 yang membatasi akses ke elemen yang terakhir ditambahkan ke beberapa jenis kontainer yang mendasar. Kelas stack digunakan ketika penting untuk menjadi jelas bahwa hanya stack operasi yang dilakukan pada kontainer.
Sintaks
template <class Type, class Container= deque <Type>>
class stack
Parameter
Type
Jenis data elemen yang akan disimpan dalam tumpukan.
Container
Jenis kontainer yang mendasar yang digunakan untuk mengimplementasikan tumpukan. Nilai defaultnya adalah kelas deque<Type>.
Keterangan
Elemen kelas Type yang ditetapkan dalam parameter templat pertama dari objek tumpukan 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 dasar yang sesuai untuk tumpukan termasuk deque, list kelas, danvector kelas, atau kontainer urutan lainnya yang mendukung operasi back, push_back, dan pop_back. Kelas kontainer yang mendasarinya dienkapsulasi dalam adaptor kontainer, yang hanya mengekspos set terbatas dari fungsi anggota kontainer urutan sebagai antarmuka publik.
Objek stack sebanding jika dan hanya jika elemen kelas Type sebanding dan kurang sebanding jika dan hanya jika elemen kelas Type kurang sebanding.
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 berbaris untuk 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 elemen depan dan belakang dengan cara ini adalah alasan bulu 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 badan, atau beberapa kriteria lainnya.
Anggota
Konstruktor
| Nama | Deskripsi |
|---|---|
stack |
Membuat stack yang kosong atau yang merupakan salinan objek kontainer dasar. |
Typedefs
| Nama | Deskripsi |
|---|---|
container_type |
Jenis yang menyediakan kontainer dasar untuk disesuaikan oleh stack. |
size_type |
Jenis bilangan bulat yang tidak ditandatangani yang dapat mewakili jumlah elemen dalam stack. |
value_type |
Jenis yang mewakili jenis objek yang disimpan sebagai elemen dalam stack. |
Fungsi
| Nama | Deskripsi |
|---|---|
empty |
Menguji apakah stack kosong. |
pop |
Menghapus elemen dari bagian stackatas . |
push |
Menambahkan elemen ke bagian stackatas . |
size |
Mengembalikan jumlah elemen dalam stack. |
top |
Mengembalikan referensi ke elemen di bagian stackatas . |
container_type
Jenis yang menyediakan kontainer dasar yang akan diadaptasi.
typedef Container container_type;
Keterangan
Jenisnya adalah sinonim untuk parameter Containertemplat . Ketiga kelas kontainer urutan Pustaka Standar C++ — vector kelas, list kelas, dan kelas deque default — memenuhi persyaratan yang akan digunakan sebagai kontainer dasar untuk stack objek. Jenis yang ditentukan pengguna yang memenuhi persyaratan ini juga dapat digunakan.
Untuk informasi selengkapnya tentang Container, lihat bagian Keterangan dari stack topik Kelas .
Contoh
Lihat contoh untuk stack::stack contoh cara mendeklarasikan dan menggunakan container_type.
empty
Menguji apakah tumpukan kosong.
bool empty() const;
Tampilkan Nilai
true jika tumpukan kosong; false jika tumpukan tidak ada.
Contoh
// stack_empty.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
// Declares stacks with default deque base container
stack <int> s1, s2;
s1.push( 1 );
if ( s1.empty( ) )
cout << "The stack s1 is empty." << endl;
else
cout << "The stack s1 is not empty." << endl;
if ( s2.empty( ) )
cout << "The stack s2 is empty." << endl;
else
cout << "The stack s2 is not empty." << endl;
}
The stack s1 is not empty.
The stack s2 is empty.
pop
Menghapus elemen dari bagian atas tumpukan.
void pop();
Keterangan
Tumpukan harus tidak ada untuk menerapkan fungsi anggota. Bagian atas tumpukan adalah posisi yang ditempati oleh elemen yang terakhir ditambahkan dan merupakan elemen terakhir di akhir kontainer.
Contoh
// stack_pop.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1, s2;
s1.push( 10 );
s1.push( 20 );
s1.push( 30 );
stack <int>::size_type i;
i = s1.size( );
cout << "The stack length is " << i << "." << endl;
i = s1.top( );
cout << "The element at the top of the stack is "
<< i << "." << endl;
s1.pop( );
i = s1.size( );
cout << "After a pop, the stack length is "
<< i << "." << endl;
i = s1.top( );
cout << "After a pop, the element at the top of the stack is "
<< i << "." << endl;
}
The stack length is 3.
The element at the top of the stack is 30.
After a pop, the stack length is 2.
After a pop, the element at the top of the stack is 20.
push
Menambahkan elemen ke bagian atas tumpukan.
void push(const Type& val);
Parameter
val
Elemen ditambahkan ke bagian atas tumpukan.
Keterangan
Bagian atas tumpukan adalah posisi yang ditempati oleh elemen yang terakhir ditambahkan dan merupakan elemen terakhir di akhir kontainer.
Contoh
// stack_push.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1;
s1.push( 10 );
s1.push( 20 );
s1.push( 30 );
stack <int>::size_type i;
i = s1.size( );
cout << "The stack length is " << i << "." << endl;
i = s1.top( );
cout << "The element at the top of the stack is "
<< i << "." << endl;
}
The stack length is 3.
The element at the top of the stack is 30.
size
Mengembalikan jumlah elemen dalam tumpukan.
size_type size() const;
Tampilkan Nilai
Panjang tumpukan saat ini.
Contoh
// stack_size.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1, s2;
stack <int>::size_type i;
s1.push( 1 );
i = s1.size( );
cout << "The stack length is " << i << "." << endl;
s1.push( 2 );
i = s1.size( );
cout << "The stack length is now " << i << "." << endl;
}
The stack length is 1.
The stack length is now 2.
size_type
Tipe bilangan bulat yang tidak ditandatangani yang dapat mewakili jumlah elemen dalam tumpukan.
typedef typename Container::size_type size_type;
Keterangan
Jenis adalah sinonim untuk size_type kontainer dasar yang diadaptasi oleh tumpukan.
Contoh
Lihat contoh untuk size contoh cara mendeklarasikan dan menggunakan size_type.
stack
Membuat tumpukan yang kosong atau yang merupakan salinan kelas kontainer dasar.
stack();
explicit stack(const container_type& right);
Parameter
right
Kontainer tempat tumpukan yang dibangun akan menjadi salinan.
Contoh
// stack_stack.cpp
// compile with: /EHsc
#include <stack>
#include <vector>
#include <list>
#include <iostream>
int main( )
{
using namespace std;
// Declares stack with default deque base container
stack <char> dsc1;
//Explicitly declares a stack with deque base container
stack <char, deque<char> > dsc2;
// Declares a stack with vector base containers
stack <int, vector<int> > vsi1;
// Declares a stack with list base container
stack <int, list<int> > lsi;
// The second member function copies elements from a container
vector<int> v1;
v1.push_back( 1 );
stack <int, vector<int> > vsi2( v1 );
cout << "The element at the top of stack vsi2 is "
<< vsi2.top( ) << "." << endl;
}
The element at the top of stack vsi2 is 1.
top
Mengembalikan referensi ke elemen di bagian atas tumpukan.
reference top();
const_reference top() const;
Tampilkan Nilai
Referensi ke elemen terakhir dalam kontainer di bagian atas tumpukan.
Keterangan
Tumpukan harus tidak ada untuk menerapkan fungsi anggota. Bagian atas tumpukan adalah posisi yang ditempati oleh elemen yang terakhir ditambahkan dan merupakan elemen terakhir di akhir kontainer.
Jika nilai top pengembalian ditetapkan ke const_reference, stack objek tidak dapat dimodifikasi. Jika nilai top pengembalian ditetapkan ke reference, stack objek dapat dimodifikasi.
Contoh
// stack_top.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1;
s1.push( 1 );
s1.push( 2 );
int& i = s1.top( );
const int& ii = s1.top( );
cout << "The top integer of the stack s1 is "
<< i << "." << endl;
i--;
cout << "The next integer down is "<< ii << "." << endl;
}
The top integer of the stack s1 is 2.
The next integer down is 1.
value_type
Jenis yang mewakili jenis objek yang disimpan sebagai elemen dalam tumpukan.
typedef typename Container::value_type value_type;
Keterangan
Jenis adalah sinonim untuk value_type kontainer dasar yang diadaptasi oleh tumpukan.
Contoh
// stack_value_type.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
// Declares stacks with default deque base container
stack<int>::value_type AnInt;
AnInt = 69;
cout << "The value_type is AnInt = " << AnInt << endl;
stack<int> s1;
s1.push( AnInt );
cout << "The element at the top of the stack is "
<< s1.top( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the top of the stack is 69.
Lihat juga
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++