STL標準テンプレートライブラリにおけるスタックスタックスタック容器の使用
3197 ワード
スタックはよく使われているデータ構造です.スタックの特徴によって、もちろん自分でスタックを書いてもいいです.しかし、便利のためにSTLで提供されたスタック容器を使って、いくつかの基本的な操作を提供しています.
stack:empty book empty()const;
空かどうか判断する.Return Value true if the container size is 0,false otherswise.
total:55
---------------------------------------------
stack:pop void pop();スタックの上部に要素を削除します.
Popping out elements…4 3 2 1 0
---------------------------------------------
stack::push void push(const T&x);スタックの一番上に要素を追加
Popping out elements…4 3 2 1 0
---------------------------------------------
stack:size
size_type size()const;
スタックの要素の個数を計算します.
0.size:0
1.size:5
2.size:4
---------------------------------------------
stack:top
value_type&top()
const value_type&top()const;
スタックの一番上の要素を返します
mystack.top()is now 15
その中から、スタックは遍歴の方法を提供していないことが分かります.唯一の方法はスタックの中の元素を一つずつ弾きます.しかし、これで最終的にスタックが変わります.だから、遍歴が必要な時、私達はこの場所に注意します.
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
その中から、スタックは遍歴の方法を提供していないことが分かります.唯一の方法はスタックの中の元素を一つずつ弾きます.しかし、これで最終的にスタックが変わります.だから、遍歴が必要な時、私達はこの場所に注意します.