Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Maîtriser std::stack en C++ : Guide complet avec exemples pratiques

Qu'est-ce que std::stack ?

std::stack est un adaptateur de conteneur qui implémente le principe LIFO (Last In, First Out - dernier entré, premier sorti). Il permet l'insertion et la suppression d'éléments uniquement par une extrémité – le sommet. Par défaut, il utilise std::deque comme conteneur sous-jacent, mais tout conteneur de séquence (ex. std::vector ou std::list) peut être fourni.

Les adaptateurs de conteneurs n'exposent pas d'itérateurs, vous ne pouvez donc pas parcourir une pile directement. À la place, vous interagissez avec elle via ses fonctions membres.

Objectifs d'apprentissage

Syntaxe

Incluez l'en-tête <stack> et déclarez une pile avec le template suivant :

template<class T, class Container = std::deque<T>> class stack;

Types membres

Opérations principales

Vue d'ensemble de l'implémentation

Voici une représentation visuelle des opérations de pile (le sommet de la pile indiqué par le pointeur).
Maîtriser std::stack en C++ : Guide complet avec exemples pratiques

push() et pop()

La méthode push() ajoute un nouvel élément, augmentant la taille de un :

stack.push(valeur);

Inversement, pop() supprime l'élément du sommet et réduit la taille :

stack.pop();

Exemple 1 : Manipulation de base de pile


#include <iostream>
#include <stack>
using namespace std;
int main() {
    stack<int> st;
    st.push(10);
    st.push(20);
    st.push(30);
    st.push(40);
    st.pop(); // supprime 40
    st.pop(); // supprime 30
    while (!st.empty()) {
        cout << ' ' << st.top();
        st.pop();
    }
    return 0;
}

Sortie : 20 10

empty(), size(), top()

Ces fonctions utilitaires fournissent des informations rapides sur l'état de la pile.

Exemple 2 : Inspection de l'état de la pile


#include <iostream>
#include <stack>
using namespace std;
void display(stack<int> s) {
    while (!s.empty()) {
        cout << '\t' << s.top();
        s.pop();
    }
    cout << '\n';
}
int main() {
    stack<int> st;
    st.push(32);
    st.push(21);
    st.push(39);
    st.push(89);
    st.push(25);
    cout << "The stack st is: ";
    display(st);
    cout << "\n st.size() : " << st.size();
    cout << "\n st.top() : " << st.top();
    st.pop();
    cout << "\n st after pop: ";
    display(st);
    return 0;
}

Sortie : affiche le contenu de la pile, sa taille, l'élément du sommet et l'état après un pop.

emplace() et swap()

• emplace() construit un élément sur place, évitant une copie supplémentaire.
• swap() échange le contenu de deux piles efficacement.

Exemple 3 : Utilisation de emplace() et swap()


#include <iostream>
#include <stack>
using namespace std;
int main() {
    stack<int> st1, st2;
    st1.emplace(12);
    st1.emplace(19);
    st2.emplace(20);
    st2.emplace(23);
    st1.swap(st2);
    cout << "st1 = ";
    while (!st1.empty()) {
        cout << st1.top() << " ";
        st1.pop();
    }
    cout << endl << "st2 = ";
    while (!st2.empty()) {
        cout << st2.top() << " ";
        st2.pop();
    }
}

Sortie : démontre le contenu des piles avant et après l'échange.

Utilisation de std::stack dans la STL

Implémenter une pile en une seule ligne :

std::stack<T> st;

Exemple :


#include <iostream>
#include <stack>
using namespace std;
int main() {
    stack<int> st;
    st.push(12);
    st.push(19);
    st.push(20);
    cout << st.top(); // 20
    cout << st.size(); // 3
    return 0;
}

Résumé

Langue C

  1. Opérateurs C++ expliqués : Types, exemples et programmes d'exemple
  2. Boucle do-while en C++ : Syntaxe, exemples pratiques et boucles imbriquées
  3. Maîtriser le switch-case en C++ : Syntaxe, utilisation et exemples pratiques
  4. Maîtriser l'allocation de tableaux dynamiques en C++ : Guide pratique avec exemples de code
  5. Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
  6. Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code
  7. Les structures en C++ expliquées avec un exemple pratique
  8. Maîtriser std::map en C++ : Guide complet avec exemples de code
  9. Maîtriser std::list en C++ : Syntaxe, Fonctions et Exemples Pratiques