Udostępnij za pośrednictwem


Używanie funkcji stack::top i stack::empty STL w języku Visual C++

W tym artykule pokazano, jak używać stack::top funkcji i stack::empty STL w programie Visual C++. Informacje zawarte w tym artykule dotyczą tylko niezarządzanych kodu Visual C++.

Oryginalna wersja produktu: Visual C++
Oryginalny numer KB: 158040

Wymagany nagłówek

  • <stack>

Prototyp

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;

Uwaga 16.

Nazwy klas lub parametrów w prototypie mogą nie być zgodne z wersją w pliku nagłówka. Niektóre zostały zmodyfikowane w celu zwiększenia czytelności.

Opis funkcji stack::top i stack::empty

Funkcja top zwraca najbardziej górny element stosu. Przed wywołaniem top funkcji upewnij się, że na stosie znajduje się co najmniej jeden element. Pierwsza wersja top funkcji zwraca odwołanie do elementu górnego stosu, co umożliwia zmodyfikowanie wartości. Druga funkcja zwraca stałe odwołanie, upewniając się, że nie można przypadkowo zmodyfikować stosu.

Funkcja empty zwraca wartość true , jeśli w stosie nie ma żadnych elementów. Jeśli istnieje co najmniej jeden element, funkcja zwróci wartość false. Należy użyć empty funkcji , aby sprawdzić, czy na stosie pozostają elementy przed wywołaniem top funkcji.

Przykładowy kod

//////////////////////////////////////////////////////////////////////
// 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();
    }
}