stack是一種先進後出的資料結構,只有乙個出口(末端),stack允許增加元素、移除元素和取得最末端(最頂端)元素,但這些操作都只能在末端進行,除了末端,stack沒有辦法訪問其他位置的元素,沒有遍歷功能。
把相應的已有的容器作為底部結構,將其介面改變,使之符合stack的特性,就形成乙個stack。deque和list都是雙向開口的資料結構,相應改變一下可以符合stack的特性,都是可以作為stack的底層容器。sgi stl stack預設底層容器是deque。
stack原始碼:
template
<
classt,
class
sequence
= deque
>
class
stack
size_type size()
const
//兩個函式的區別:
reference top()
//stacka;a.top();會呼叫
const_reference top()
const
//const stacka;a.top();會呼叫
void
push
(const value_type& x)
void
pop()}
;//stack的比較實際上就是底層容器的比較,會呼叫底層容器的過載操作符==、<
template
<
classt,
class
sequence
>
bool
operator==(
const stack
& x,
const stack
& y)
template
<
classt,
class
sequence
>
bool
operator
<
(const stack
& x,
const stack
& y)
stack沒有迭代器,沒有辦法遍歷,只允許對末端的元素增刪查改
list也有 empty, size, back, push_back, pop_back函式,也可以==和《比較,也可以作為stack底層容器
例:stackistack;
STL原始碼剖析 stack
stack 是一種 先進後出 的資料結構,它只能在棧頂對資料進行操作,即只能在棧頂進行新增元素 移除元素 取得最頂端元素。不能進行遍歷行為,所以不需要設計自己的迭代器。在 sgi stl 的原始碼的設計中,它是基於某種容器作為底部結構的,預設容器是 deque 容器,使用者也可以自己指定容器的型別。...
STL原始碼剖析學習七 stack和queue
stl原始碼剖析學習七 stack和queue stack是一種先進後出的資料結構,只有乙個出口。允許新增 刪除 獲取最頂端的元素,沒有任何辦法可以訪問其他元素,不允許有遍歷行為。預設情況下用deque作為stack的底部結構,將其介面改變,封住一端就可以形成stack 介面 empty size ...
STL原始碼剖析
這兩天略讀完了 stl原始碼剖析 之所以是略讀,就是只看大體,不講具現 這個詞在 深度探析c 物件模型 中比較多 已經看過好幾本c 的書了,感覺c 本身設計的博大精深,而c 編譯器就更是乙個神奇的東西,換句話說,你永遠不知道c 編譯器揹著你做了哪些出乎你意料的事 不扯遠了 我主要是想看stl容器的具...