STL - stack用法總結

(我的STL相關的博客目錄:https://blog.csdn.net/Kprogram/article/details/90408011

(stack-c++官網:http://www.cplusplus.com/reference/stack/

stack 是數據結構 “棧”,擁有元素先進後出的特性,如果用數組來作爲棧,長度是有限的,而且需要儲存棧頂的指針,有點麻煩且侷限。stl提供了一個不定長容器stack來作爲棧,stack表留有有棧操作的各種成員函數,方便實用。

0 - 頭文件:stack  命名空間:std

#include <stack>
using namespace std;

1 - 構建一個stack:stack<typename> name 

    typename指的是棧內數據類型,可以是 int, double, 可以是struct, class, 也可以是 stack, string等等。總之是一個數據對象都行。

    name 是你構建的棧的名字,符合變量命名法則就行。

    :構建一個 int 類型的棧, 名字叫做 S。

stack<int> s;

2 使用stack:常用成員函數 ( 假設你創建的stack對象名字叫 S )

    (粉紅色的函數爲常用函數!大部分情況下這些函數就夠用了)

無參函數:

    empty():如果stack爲空,返回True, 反之則返回 False。

    top():返回棧頂元素。

    pop():刪除棧頂元素,不返回棧頂元素(一般與top()配合使用:先返top(),再pop(),相當於出棧操作)。

    size():返回stack內數據的個數(相當於數組長度)。

#一般用法:(假如是一個int類型的棧)
while(!S.empty()) {//當棧不爲空
    int I = S.top(); S.pop();//元素出棧
    ...//對I的某些操作

有參函數:

    push(type):把一個數據(type)壓入棧頂(相當於入棧)。

        因爲對於棧,push等同於push_back,所以stack 沒有push_back成員函數!(已經試過了會報錯)

    swap(S1):交換S 和 S1 中的內容(S1是另一個stack對象)。

//假設棧內的數據類型是data
class data {
  int a;
  int b;
public:
  data(int x, int y):a(x), b(y) {}
};
//push
data d(1,2);
S.push(d);
//或者
S.push(data(1,2));

  push的優化:emplace函數(點擊藍色字體>emplace<)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章