Aracılığıyla paylaş


stack Sınıf

Temel alınan bir kapsayıcı türüne en son eklenen öğeye erişimi sınırlayan bir işlev kısıtlaması sağlayan bir şablon kapsayıcı bağdaştırıcısı sınıfı. sınıfı stack , kapsayıcıda yalnızca stack işlemlerin gerçekleştirildiğinin açık olması önemli olduğunda kullanılır.

Sözdizimi

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

Parametreler

Type
Yığında depolanacak öğe veri türü.

Container
Yığını uygulamak için kullanılan temel kapsayıcının türü. Varsayılan değer sınıfıdır deque<Type>.

Açıklamalar

Bir yığın nesnesinin ilk şablon parametresinde belirtilen sınıfın Type öğeleri ile eş anlamlıdır ve ikinci şablon parametresi tarafından belirtilen temel kapsayıcı sınıfındaki Container öğe türüyle value_type eşleşmelidir. Type atanabilir olmalıdır, böylece bu türdeki nesneleri kopyalamak ve bu türdeki değişkenlere değer atamak mümkündür.

Yığın için uygun temel kapsayıcı sınıfları , list sınıfı vevector sınıfını ya da , push_backve pop_backişlemlerini destekleyen diğer sıralı kapsayıcıları backiçerirdeque. Temel alınan kapsayıcı sınıfı kapsayıcı bağdaştırıcısı içinde kapsüllenmiştir ve bu da yalnızca sıralı kapsayıcı üyesi işlevlerinin sınırlı kümesini ortak arabirim olarak kullanıma sunar.

Sınıfın stack öğeleri eşitlik karşılaştırılabilirse ve yalnızca sınıfın Type öğeleri karşılaştırılabilirse ve yalnızca sınıfın Type öğeleri daha az karşılaştırılabilirse eşitlik karşılaştırılabilir.

  • stack sınıfı, last-in, first-out (LIFO) veri yapısını destekler. Akılda tutulması gereken iyi bir analog plaka yığını olabilir. Öğeler (levhalar) yalnızca temel kapsayıcının sonundaki son öğe olan yığının en üstünden eklenebilir, incelenebilir veya kaldırılabilir. Yalnızca en üst öğeye erişme kısıtlaması, sınıfını stack kullanmanın nedenidir.

  • queue sınıfı, ilk giriş, ilk çıkış (FIFO) veri yapısını destekler. Akılda tutulması gereken iyi bir analog, insanların banka veznesi için sıraya girmiş olmasıdır. Öğeler (kişiler) satırın arkasına eklenebilir ve satırın önünden kaldırılabilir. Bir hattın hem ön hem de arka kısmı incelenebilir. Yalnızca ön ve arka öğelere bu şekilde erişme kısıtlaması, sınıfı kullanan queue kürk nedenidir.

  • sınıfı priority_queue öğelerini sıralar, böylece en büyük öğe her zaman en üst konumda olur. Bir öğenin eklenmesini ve üst öğenin incelenmesini ve kaldırılmasını destekler. Akılda tutulması gereken iyi bir analog, insanların yaşlarına, boylarına veya başka ölçütlere göre düzenlendikleri yerde sıraya giren kişiler olabilir.

Üyeler

Oluşturucular

Veri Akışı Adı Açıklama
stack stack Boş veya bir temel kapsayıcı nesnesinin kopyası olan bir oluşturur.

Tür tanımları

Veri Akışı Adı Açıklama
container_type tarafından uyarlanacak temel kapsayıcıyı sağlayan bir stacktür.
size_type içindeki öğe sayısını temsil eden işaretsiz bir stacktamsayı türü.
value_type içinde öğe olarak depolanan nesne türünü temsil eden bir stacktür.

İşlevler

Veri Akışı Adı Açıklama
empty boş olup olmadığını sınar stack .
pop öğesini öğesinin üst kısmından stackkaldırır.
push öğesinin en üstüne stackbir öğe ekler.
size içindeki stacköğe sayısını döndürür.
top öğesinin en üstündeki stackbir öğeye başvuru döndürür.

container_type

Uyarlanacak temel kapsayıcıyı sağlayan bir tür.

typedef Container container_type;

Açıklamalar

türü, şablon parametresi Containeriçin bir eş anlamlıdır. Üç C++ Standart Kitaplık dizisi kapsayıcı sınıfı da vector (sınıf, list sınıf ve varsayılan sınıf deque ) bir stack nesne için temel kapsayıcı olarak kullanılacak gereksinimleri karşılar. Bu gereksinimleri karşılayan kullanıcı tanımlı türler de kullanılabilir.

hakkında Containerdaha fazla bilgi için Sınıf konusunun Açıklamalar bölümüne stack bakın.

Örnek

bildirme ve kullanma container_typeörneği için stack::stack örneğine bakın.

empty

Bir yığının boş olup olmadığını sınar.

bool empty() const;

Dönüş Değeri

true yığın boşsa; false yığın boşsa.

Örnek

// 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

öğesini yığının üst kısmından kaldırır.

void pop();

Açıklamalar

Üye işlevini uygulamak için yığının boş olması gerekir. Yığının üst kısmı, en son eklenen öğenin kapladığı konumdur ve kapsayıcının sonundaki son öğedir.

Örnek

// 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

Yığının en üstüne bir öğe ekler.

void push(const Type& val);

Parametreler

val
öğesi yığının en üstüne eklendi.

Açıklamalar

Yığının üst kısmı, en son eklenen öğenin kapladığı konumdur ve kapsayıcının sonundaki son öğedir.

Örnek

// 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

Yığındaki öğelerin sayısını döndürür.

size_type size() const;

Dönüş Değeri

Yığının geçerli uzunluğu.

Örnek

// 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

Bir yığındaki öğe sayısını temsil eden işaretsiz bir tamsayı türü.

typedef typename Container::size_type size_type;

Açıklamalar

türü, yığın tarafından uyarlanan temel kapsayıcının eş anlamlısıdır size_type .

Örnek

bildirme ve kullanma size_typeörneği için size örneğine bakın.

stack

Boş veya bir temel kapsayıcı sınıfının kopyası olan bir yığın oluşturur.

stack();

explicit stack(const container_type& right);

Parametreler

right
Oluşturulacak yığının kopya olacağı kapsayıcı.

Örnek

// 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

Yığının en üstündeki bir öğeye başvuru döndürür.

reference top();

const_reference top() const;

Dönüş Değeri

Yığının en üstündeki kapsayıcıdaki son öğeye başvuru.

Açıklamalar

Üye işlevini uygulamak için yığının boş olması gerekir. Yığının üst kısmı, en son eklenen öğenin kapladığı konumdur ve kapsayıcının sonundaki son öğedir.

değerinin dönüş değeri top bir const_referencestack öğesine atanmışsa, nesnesi değiştirilemez. değerinin dönüş değeri top bir referencestack öğesine atanmışsa, nesnesi değiştirilebilir.

Örnek

// 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

Yığında öğe olarak depolanan nesne türünü temsil eden bir tür.

typedef typename Container::value_type value_type;

Açıklamalar

türü, yığın tarafından uyarlanan temel kapsayıcının eş anlamlısıdır value_type .

Örnek

// 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.

Ayrıca bkz.

C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu