Partager via


Utiliser les fonctions stack ::top et stack ::empty STL dans Visual C++

Cet article explique comment utiliser les stack::top fonctions stL et stack::empty les fonctions STL dans Visual C++. Les informations contenues dans cet article s’appliquent uniquement au code Visual C++ non managé.

Version du produit d’origine : Visual C++
Numéro de la base de connaissances d’origine : 158040

En-tête requis

  • <stack>

Prototype

template <class _TYPE, class _C, class _A> // Function 1
value_type &stack::top();

template <class _TYPE, class _C, class _A> // Function 2
const value_type &stack::top() const;

template <class _TYPE, class _C, class _A> // Function 3
bool stack::empty() const;

Note

Les noms de classe ou de paramètre dans le prototype peuvent ne pas correspondre à la version dans le fichier d’en-tête. Certains ont été modifiés pour améliorer la lisibilité.

Description des fonctions stack ::top et stack ::empty

La top fonction retourne l’élément le plus haut de la pile. Vous devez vous assurer qu’il existe un ou plusieurs éléments sur la pile avant d’appeler la top fonction. La première version de la top fonction retourne une référence à l’élément du haut de la pile, ce qui vous permet de modifier la valeur. La deuxième fonction retourne une référence constante, ce qui garantit que vous ne modifiez pas accidentellement la pile.

La empty fonction retourne true s’il n’y a aucun élément dans la pile. S’il existe un ou plusieurs éléments, la fonction retourne false. Vous devez utiliser la empty fonction pour vérifier qu’il y a des éléments laissés sur la pile avant d’appeler la top fonction.

Exemple de code

//////////////////////////////////////////////////////////////////////
// Compile options needed: /GX
// StackTop&Empty.cpp : Illustrates how to use the top function to
// retrieve the last element of the controlled
// sequence. It also illustrates how to use the
// empty function to loop though the stack.
// Functions:
// top : returns the top element of the stack.
// empty : returns true if the stack has 0 elements.
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
//////////////////////////////////////////////////////////////////////

#pragma warning(disable : 4786)

#include <stack>
#include <iostream>

#if _MSC_VER > 1020  // if VC++ version is > 4.2
    using namespace std; // std c++ libs implemented in std
#endif

typedef stack<int, deque<int>> STACK_INT;
void main()
{
    STACK_INT stack1;
    cout << "stack1.empty() returned " <<
        (stack1.empty() ? "true" : "false") << endl; // Function 3
    cout << "stack1.push(2)" << endl;
    stack1.push(2);

    if (!stack1.empty()) // Function 3
        cout << "stack1.top() returned " << stack1.top() << endl; // Function 1
    cout << "stack1.push(5)" << endl;
    stack1.push(5);

    if (!stack1.empty()) // Function 3
        cout << "stack1.top() returned " << stack1.top() << endl; // Function 1
    cout << "stack1.push(11)" << endl;
    stack1.push(11);

    if (!stack1.empty()) // Function 3
        cout << "stack1.top() returned " << stack1.top() << endl; // Function 1

    // Modify the top item. Set it to 6.
    if (!stack1.empty())
    { // Function 3
        cout << "stack1.top()=6;" << endl;
        stack1.top() = 6; // Function 1
    }

    // Repeat until stack is empty
    while (!stack1.empty())            // Function 3
    {
        const int &t = stack1.top(); // Function 2
        cout << "stack1.top() returned " << t << endl;
        cout << "stack1.pop()" << endl;
        stack1.pop();
    }
}