STL標準テンプレートライブラリにおけるスタックスタックスタック容器の使用


スタックはよく使われているデータ構造です.スタックの特徴によって、もちろん自分でスタックを書いてもいいです.しかし、便利のためにSTLで提供されたスタック容器を使って、いくつかの基本的な操作を提供しています.
stack:empty book empty()const;
空かどうか判断する.Return Value true if the container size is 0,false otherswise.
<span style="font-size:24px;">// stack::empty
#include <iostream>
#include <stack>
using namespace std;

int main ()
{
  stack<int> mystack;
  int sum (0);

  for (int i=1;i<=10;i++) mystack.push(i);

  while (!mystack.empty())
  {
     sum += mystack.top();
     mystack.pop();
  }

  cout << "total: " << sum << endl;
  
  return 0;
}</span>
Output:
total:55
---------------------------------------------
stack:pop void pop();スタックの上部に要素を削除します.
// stack::push/pop
#include <iostream>
#include <stack>
using namespace std;

int main ()
{
  stack<int> mystack;

  for (int i=0; i<5; ++i) mystack.push(i);

  cout << "Popping out elements...";
  while (!mystack.empty())
  {
     cout << " " << mystack.top();
     mystack.pop();
  }
  cout << endl;

  return 0;
}
Output:
Popping out elements…4 3 2 1 0
---------------------------------------------
stack::push void push(const T&x);スタックの一番上に要素を追加
// stack::push/pop
#include <iostream>
#include <stack>
using namespace std;

int main ()
{
  stack<int> mystack;

  for (int i=0; i<5; ++i) mystack.push(i);

  cout << "Popping out elements...";
  while (!mystack.empty())
  {
     cout << " " << mystack.top();
     mystack.pop();
  }
  cout << endl;

  return 0;
}
Output:
Popping out elements…4 3 2 1 0
---------------------------------------------
 
stack:size
size_type size()const;
スタックの要素の個数を計算します.
// stack::size
#include <iostream>
#include <stack>
using namespace std;

int main ()
{
  stack<int> myints;
  cout << "0. size: " << (int) myints.size() << endl;

  for (int i=0; i<5; i++) myints.push(i);
  cout << "1. size: " << (int) myints.size() << endl;

  myints.pop();
  cout << "2. size: " << (int) myints.size() << endl;

  return 0;
}
Output:
0.size:0
1.size:5
2.size:4
---------------------------------------------
 
stack:top
value_type&top()
const value_type&top()const;
スタックの一番上の要素を返します
// test_stack.cpp :              。
//

#include "stdafx.h"
#include <stack>
#include <vector>
#include <deque>
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	stack<int> mystack;
	mystack.push(10);
	mystack.push(20);
	mystack.top()-=5;
	cout << "mystack.top() is now " << mystack.top() << endl;

	return 0;
}
Output:
mystack.top()is now 15
その中から、スタックは遍歴の方法を提供していないことが分かります.唯一の方法はスタックの中の元素を一つずつ弾きます.しかし、これで最終的にスタックが変わります.だから、遍歴が必要な時、私達はこの場所に注意します.