STL原始碼剖析 stack

2021-10-01 05:57:47 字數 1209 閱讀 9955

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容器的具...