STL系列之二 stack棧

2021-06-22 16:55:23 字數 1630 閱讀 9949

棧(statck)這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的(first in last out, filo)。棧只有乙個出口,允許新增元素(只能在棧頂上增加)、移出元素(只能移出棧頂元素)、取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。因此實現非常的方便。下面就給出棧的函式列表和vs2008中棧的源**,在stl中棧一共就5個常用操作函式(top()、push()、pop()、 size()、empty() ),很好記的。

vs2008中棧的源**

[cpp]view plain

copy

//vs2008中 stack的定義 morewindows整理(

template

<

class

_ty, 

class

_container = deque<_ty> >  

class

stack  

explicit

stack(

const

_container& _cont) : c(_cont)  

bool

empty() 

const

size_type size() const

reference top()  

const_reference top() const

void

push(

const

value_type& _val)  

void

pop()  

const

_container& _get_container() 

const

protected

:  _container c;   // the underlying container

};  

可以看出,由於棧只是進一步封裝別的資料結構,並提供自己的介面,所以**非常簡潔,如果不指定容器,預設是用deque來作為其底層資料結構的(對deque不是很了解?可以參閱《stl系列之一 deque雙向佇列》)。下面給出棧的使用範例:

[cpp]view plain

copy

//棧 stack支援 empty() size() top() push() pop()

// by morewindows(

#include 

#include 

#include 

#include 

using

namespace

std;  

intmain()  

//棧的大小

printf("%d %d\n"

, a.size(), b.size());  

//取棧項資料並將資料彈出棧

while

(!a.empty())  

putchar('\n'

);  

while

(!b.empty())  

putchar('\n'

);  

return

0;  

}  

原文:

STL系列之二 stack棧

棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...

STL系列之二 stack棧

棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...

STL系列之二 stack棧

棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...