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_back
ve pop_back
işlemlerini destekleyen diğer sıralı kapsayıcıları back
iç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ı kullananqueue
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 stack tür. |
size_type |
içindeki öğe sayısını temsil eden işaretsiz bir stack tamsayı türü. |
value_type |
içinde öğe olarak depolanan nesne türünü temsil eden bir stack tür. |
İşlevler
Veri Akışı Adı | Açıklama |
---|---|
empty |
boş olup olmadığını sınar stack . |
pop |
öğesini öğesinin üst kısmından stack kaldırır. |
push |
öğesinin en üstüne stack bir öğe ekler. |
size |
içindeki stack öğe sayısını döndürür. |
top |
öğesinin en üstündeki stack bir öğ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 Container
iç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 Container
daha 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_reference
stack
öğesine atanmışsa, nesnesi değiştirilemez. değerinin dönüş değeri top
bir reference
stack
öğ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