C 原始碼分析 Stack

2021-09-29 21:27:45 字數 801 閱讀 4054

stack內部通過陣列來實現資料的儲存,其大部分方法和list相同,這裡不再分析,有興趣的請自行檢視原始碼。stack通過欄位_size來表示內部儲存的元素數量,由於stack時先進後出,所以通過_size控制內部陣列的最後乙個元素的新增和刪除即可。

// returns the top object on the stack without removing it.  if the stack

// is empty, peek throws an invalidoperationexception.

/// public t peek()

可以看到,當_size(儲存的元素數量)為0時(即為空棧)時,會丟擲異常;返回最後乙個元素 _array[_size-1]。

// pops an item from the top of the stack.  if the stack is empty, pop

// throws an invalidoperationexception.

/// public t pop()

和peek函式相似,置空陣列的最後乙個元素,並彈出,同時更新元素數量。

// pushes an item to the top of the stack.

// /// public void push(t item)

_array[_size++] = item;

_version++;

}

push函式會首先判斷一下內部陣列是否已滿,若滿,則擴容2倍。

STL原始碼剖析 stack

stack 是一種 先進後出 的資料結構,它只能在棧頂對資料進行操作,即只能在棧頂進行新增元素 移除元素 取得最頂端元素。不能進行遍歷行為,所以不需要設計自己的迭代器。在 sgi stl 的原始碼的設計中,它是基於某種容器作為底部結構的,預設容器是 deque 容器,使用者也可以自己指定容器的型別。...

STL原始碼剖析 stack

stack是一種先進後出的資料結構,只有乙個出口 末端 stack允許增加元素 移除元素和取得最末端 最頂端 元素,但這些操作都只能在末端進行,除了末端,stack沒有辦法訪問其他位置的元素,沒有遍歷功能。把相應的已有的容器作為底部結構,將其介面改變,使之符合stack的特性,就形成乙個stack。...

JDK原始碼解析 Stack

stack是棧的實現類,棧的特點是先進後出。繼承了vector,重寫了5個方法,對vector進行了擴充套件。繼承了vector 3.1push 呼叫父類的addelement方法,新增到陣列的尾部,也就是棧頂 public e push e item 3.2 pop 出戰操作。public syn...