STLシリーズの二スタック
スタック(statck)というデータ構造はコンピュータでかなり有名です.スタック内のデータは先進的な後出(First In Last Out,FILO)である.スタックには出口が1つしかありません.新規要素(スタックの上部にのみ追加可能)、要素の削除(スタックの上部要素のみ削除可能)、スタックの上部要素の取得などの操作が可能です.STLでは,スタックは別の容器を底部構造とし,さらにインタフェースを変化させてスタックの特性に適合させるとよい.そのため、非常に便利です.次に、スタックの関数リストとVS 2008のスタックのソースコードを示します.STLではスタックが5つの一般的な操作関数(top()、push()、pop()、size()、empty()で、よく覚えています.
VS 2008のスタックのソースコード
友情のヒント:初めて読むときは、細部に時間を無駄にしないように、実現思想に注意してください.
スタックは他のデータ構造をさらにカプセル化し、独自のインタフェースを提供するだけであるため、コードは非常に簡潔であり、コンテナを指定しない場合、デフォルトではdequeを下位データ構造として使用します(dequeについてよく知られていませんか?『STLシリーズの1つであるdeque双方向キュー』を参照).スタックの使用例を次に示します.
転載は出典、原文住所を明記してください.http://blog.csdn.net/morewindows/article/details/6950881
VS 2008のスタックのソースコード
友情のヒント:初めて読むときは、細部に時間を無駄にしないように、実現思想に注意してください.
//VS2008 stack MoreWindows (http://blog.csdn.net/MoreWindows)
template >
class stack
{ // LIFO queue implemented with a container
public:
typedef _Container container_type;
typedef typename _Container::value_type value_type;
typedef typename _Container::size_type size_type;
typedef typename _Container::reference reference;
typedef typename _Container::const_reference const_reference;
stack() : c()
{ // construct with empty container
}
explicit stack(const _Container& _Cont) : c(_Cont)
{ // construct by copying specified container
}
bool empty() const
{ // test if stack is empty
return (c.empty());
}
size_type size() const
{ // test length of stack
return (c.size());
}
reference top()
{ // return last element of mutable stack
return (c.back());
}
const_reference top() const
{ // return last element of nonmutable stack
return (c.back());
}
void push(const value_type& _Val)
{ // insert element at end
c.push_back(_Val);
}
void pop()
{ // erase last element
c.pop_back();
}
const _Container& _Get_container() const
{ // get reference to container
return (c);
}
protected:
_Container c; // the underlying container
};
スタックは他のデータ構造をさらにカプセル化し、独自のインタフェースを提供するだけであるため、コードは非常に簡潔であり、コンテナを指定しない場合、デフォルトではdequeを下位データ構造として使用します(dequeについてよく知られていませんか?『STLシリーズの1つであるdeque双方向キュー』を参照).スタックの使用例を次に示します.
// stack empty() size() top() push() pop()
// by MoreWindows(http://blog.csdn.net/MoreWindows)
#include
#include
#include
#include
using namespace std;
int main()
{
// list vector , deque 。
stack> a;
stack> b;
int i;
//
for (i = 0; i < 10; i++)
{
a.push(i);
b.push(i);
}
//
printf("%d %d
", a.size(), b.size());
//
while (!a.empty())
{
printf("%d ", a.top());
a.pop();
}
putchar('
');
while (!b.empty())
{
printf("%d ", b.top());
b.pop();
}
putchar('
');
return 0;
}
転載は出典、原文住所を明記してください.http://blog.csdn.net/morewindows/article/details/6950881