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
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 menggunakanstack
kelas .Kelas ini
queue
mendukung 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 menggunakanqueue
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 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 stack atas . |
push |
Menambahkan elemen ke bagian stack atas . |
size |
Mengembalikan jumlah elemen dalam stack . |
top |
Mengembalikan referensi ke elemen di bagian stack atas . |
container_type
Jenis yang menyediakan kontainer dasar yang akan diadaptasi.
typedef Container container_type;
Keterangan
Jenisnya adalah sinonim untuk parameter Container
templat . 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++