Bibliothèque standard C++<stack>
En C++, la bibliothèque standard fournit une variété de conteneurs et d'algorithmes pour aider les développeurs à écrire des programmes plus efficacement.
<stack>Il fait partie de la bibliothèque de modèles standard C++ (STL) et implémente une structure de données de type dernier entré, premier sorti (LIFO). Cette structure de données est très adaptée aux scénarios où le "dernier élément ajouté est retiré en premier".
<stack>L'adaptateur de conteneur fournit une interface de pile, qui est basée sur d'autres conteneurs (tels quedequeouvector) pour la mettre en œuvre. Les éléments de la pile sont disposés linéairement, mais les opérations d'ajout et de suppression ne sont autorisées qu'à une seule extrémité (le sommet de la pile).
Opérations de base
push(): Ajoute un élément au sommet de la pile.pop(): Supprime l'élément au sommet de la pile.top(): Renvoie une référence à l'élément au sommet de la pile sans le supprimer.empty(): Vérifie si la pile est vide.size(): Renvoie le nombre d'éléments dans la pile.
Syntaxe
Ce qui suit utilise<stack>syntaxe de base :
#include <iostream>
#include <stack>
int main() {
std::stack<int> s;
// 向栈中添加元素
s.push(1);
s.push(2);
s.push(3);
// 访问栈顶元素
std::cout << "Top element is: " << s.top() << std::endl;
// 移除栈顶元素
s.pop();
std::cout << "After popping, top element is: " << s.top() << std::endl;
// 检查栈是否为空
if (!s.empty()) {
std::cout << "Stack is not empty." << std::endl;
}
// 打印栈的大小
std::cout << "Size of stack: " << s.size() << std::endl;
return 0;
}
Exemple
Voici un exemple complet utilisant<stack>, y compris le résultat de sortie :
Exemple
#include <stack>
int main() {
std::stack<int> s;
// Ajouter des éléments à la pile
s.push(10);
s.push(20);
s.push(30);
// Afficher l'élément au sommet de la pile
std::cout << "L'élément au sommet est : " << s.top() << std::endl; // Sortie : L'élément au sommet est : 30
// Supprimer l'élément au sommet de la pile
s.pop();
std::cout << "Après avoir dépilé, l'élément au sommet est : " << s.top() << std::endl; // Sortie : Après avoir dépilé, l'élément au sommet est : 20
// Vérifier si la pile est vide
if (!s.empty()) {
std::cout << "La pile n'est pas vide." << std::endl; // Sortie : La pile n'est pas vide.
}
// Afficher la taille de la pile
std::cout << "Taille de la pile : " << s.size() << std::endl; // Sortie : Taille de la pile : 2
// Continuer à supprimer des éléments
s.pop();
s.pop();
// Vérifier si la pile est vide
if (s.empty()) {
std::cout << "La pile est vide." << std::endl; // Sortie : La pile est vide.
}
return 0;
}
Résultat de sortie :
Top element is: 30 After popping, top element is: 20 Stack is not empty. Size of stack: 2 Stack is empty.
Notes
<stack>Il ne fournit pas de méthode pour accéder directement aux éléments de la pile ; on ne peut y accéder que viatop()Accéder à l'élément du haut de la pile.- Tentative d'appel sur une pile vide
top()oupop()Cela entraînera un comportement indéfini. <stack>Le conteneur sous-jacent de la pile peut être n'importe quel conteneur de séquence prenant en charge les itérateurs d'accès aléatoire, tel quevectoroudeque。