stack::top と stack::empty
Visual C++ で スタック :: 上 と スタック :: 空 STL の関数を使用する方法について説明します。
template<class _TYPE, class _C, class _A>
value_type& stack::top( );
template<class _TYPE, class _C, class _A>
const value_type& stack::top( ) const;
template<class _TYPE, class _C, class _A>
bool stack::empty( ) const;
解説
[!メモ]
プロトタイプのクラスやパラメーター名はヘッダー ファイルのバージョンと一致しない。ただし読みやすさが向上するように変更されました。
上 関数の戻り値はスタックの最上位の要素です。スタックに一つ以上の要素が上の関数を呼び出す前にあることを確認する必要があります。上の関数が最初のバージョン スタックの最上位の要素への参照値を変更できます。2 番目の関数の戻り値は定数参照スタックを誤って変更しないことを確認します。スタックに要素がない場合は空の関数の戻り値 true。一つ以上の要素を False 場合関数はを返します。上の関数を呼び出す前にスタックに格納する要素があることを確認するために空の関数を使用する必要があります。
使用例
// StackTopEmpty.cpp
// compile with: /EHsc
// 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.
//////////////////////////////////////////////////////////////////////
#pragma warning(disable:4786)
#include <stack>
#include <iostream>
using namespace std ;
typedef stack<int> STACK_INT;
int 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();
}
}
必要条件
ヘッダー : <stack>