Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Třída adaptéru kontejneru šablony, která poskytuje omezení funkčnosti omezující přístup k prvku, který byl naposledy přidán do některého základního typu kontejneru. Třída stack se používá, pokud je důležité vymazat, že se v kontejneru provádějí pouze stack operace.
Syntaxe
template <class Type, class Container= deque <Type>>
class stack
Parametry
Type
Datový typ elementu, který se má uložit do zásobníku.
Container
Typ základního kontejneru použitého k implementaci zásobníku. Výchozí hodnota je třída deque<Type>.
Poznámky
Prvky třídy Type stanovené v prvním parametru šablony objektu zásobníku jsou synonymem value_type a musí odpovídat typu prvku v podkladové třídě Container kontejneru stanovené druhým parametrem šablony. Musí Type být přiřaditelné, aby bylo možné kopírovat objekty tohoto typu a přiřazovat hodnoty proměnným daného typu.
Vhodné podkladové třídy kontejneru pro zásobník zahrnujídeque, list třídu avector třídu nebo jakýkoli jiný sekvencí kontejner, který podporuje operace back, push_backa pop_back. Základní třída kontejneru je zapouzdřena v adaptéru kontejneru, která zveřejňuje pouze omezenou sadu členů kontejneru sekvence jako veřejné rozhraní.
Objekty stack jsou srovnatelné, pokud a pouze pokud jsou prvky třídy Type srovnatelné a jsou menší než srovnatelné, a pouze pokud jsou prvky třídy Type menší než srovnatelné.
Třída
stackpodporuje datovou strukturu liFO (last-in). Dobrý analog, který byste měli mít na paměti, by byl zásobník plátů. Prvky (desky) lze vložit, zkontrolovat nebo odebrat pouze z horní části zásobníku, což je poslední prvek na konci základního kontejneru. Důvodem použití třídy je omezení pro přístup pouze k hornímustackprvku.Třída
queuepodporuje datovou strukturu FIFO (first-in). Dobrý analog, který byste měli mít na paměti, by byl lidé, kteří se vysílají do bankovního řekněte. Prvky (osoby) mohou být přidány do zadní části řádku a jsou odebrány z přední části čáry. Je možné zkontrolovat přední i zadní stranu čáry. Omezení přístupu pouze k předním a zadním prvkům tímto způsobem je důvodem použití třídy furqueue.Třída
priority_queueobjednává své prvky tak, aby největší prvek byl vždy na nejvyšší pozici. Podporuje vložení prvku a kontrolu a odebrání horního prvku. Dobrým analogem, který byste měli mít na paměti, by byli lidé, kteří se nacházejí v místě, kde jsou uspořádány podle věku, výšky nebo jiného kritéria.
Členové
Konstruktory
| Název | Popis |
|---|---|
stack |
stack Vytvoří prázdný objekt kontejneru nebo kopii základního objektu kontejneru. |
Typedefs
| Název | Popis |
|---|---|
container_type |
Typ, který poskytuje základní kontejner, který má být upraven pomocí stack. |
size_type |
Typ celého čísla bez znaménka, který může představovat počet prvků v objektu stack. |
value_type |
Typ, který představuje typ objektu uloženého jako prvek v objektu stack. |
Funkce
| Název | Popis |
|---|---|
empty |
Testuje, stack jestli je prázdný. |
pop |
Odebere prvek z horní části stack. |
push |
Přidá prvek na začátek .stack |
size |
Vrátí počet prvků v sadě stack. |
top |
Vrátí odkaz na prvek v horní části stack. |
container_type
Typ, který poskytuje základní kontejner, který se má přizpůsobit.
typedef Container container_type;
Poznámky
Typ je synonymem pro parametr Containeršablony . Všechny tři třídy kontejneru sekvence standardní knihovny C++ – vector třída, list třída a výchozí třída deque – splňují požadavky, které se mají použít jako základní kontejner objektu stack . Uživatelem definované typy, které splňují tyto požadavky, lze použít také.
Další informace naleznete Containerv části Poznámky tématu předmětustack.
Příklad
Podívejte se na příklad stack::stack , jak deklarovat a používat container_type.
empty
Testuje, jestli je zásobník prázdný.
bool empty() const;
Návratová hodnota
true pokud je zásobník prázdný; false pokud je zásobník neprázdný.
Příklad
// 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
Odebere prvek z horní části zásobníku.
void pop();
Poznámky
Aby se členová funkce použila, musí být zásobník nechtěný. Horní část zásobníku je pozice obsazená naposledy přidaným prvkem a je posledním prvkem na konci kontejneru.
Příklad
// 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
Přidá prvek na začátek zásobníku.
void push(const Type& val);
Parametry
val
Prvek přidaný do horní části zásobníku.
Poznámky
Horní část zásobníku je pozice obsazená naposledy přidaným prvkem a je posledním prvkem na konci kontejneru.
Příklad
// 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
Vrátí počet prvků v zásobníku.
size_type size() const;
Návratová hodnota
Aktuální délka zásobníku.
Příklad
// 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
Typ celého čísla bez znaménka, který může představovat počet prvků v zásobníku.
typedef typename Container::size_type size_type;
Poznámky
Typ je synonymem základního size_type kontejneru přizpůsobeného zásobníkem.
Příklad
Podívejte se na příklad size , jak deklarovat a používat size_type.
stack
Vytvoří zásobník, který je prázdný nebo je kopií základní třídy kontejneru.
stack();
explicit stack(const container_type& right);
Parametry
right
Kontejner, jehož vytvořený zásobník má být kopií.
Příklad
// 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
Vrátí odkaz na prvek v horní části zásobníku.
reference top();
const_reference top() const;
Návratová hodnota
Odkaz na poslední prvek v kontejneru v horní části zásobníku.
Poznámky
Aby se členová funkce použila, musí být zásobník nechtěný. Horní část zásobníku je pozice obsazená naposledy přidaným prvkem a je posledním prvkem na konci kontejneru.
Pokud je vrácená hodnota top přiřazena k objektu const_reference, stack nelze objekt změnit. Pokud je vrácená hodnota top přiřazena k objektu reference, stack lze objekt upravit.
Příklad
// 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
Typ, který představuje typ objektu uložený jako prvek v zásobníku.
typedef typename Container::value_type value_type;
Poznámky
Typ je synonymem základního value_type kontejneru přizpůsobeného zásobníkem.
Příklad
// 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.
Viz také
Bezpečný přístup z více vláken ve standardní knihovně C++
Standardní knihovna C++ – referenční dokumentace