Bagikan melalui


stack Kelas

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 menggunakan stack 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 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 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++