目錄
1, 什么是stack
2, 創建stack
2-1, 標準數據類型
2-2, 自定義數據類型
2-3, 其他創建方式
3, 操作stack
3-1, 賦值
3-2, 插入元素(push)
3-3, 查詢元素
3-4, 刪除元素
3-5, 判斷是否為空
3-6, 交換
3-7, 獲取長度
1, 什么是stack
C++中的容器數據類型, 叫著棧容器, 元素是先進后出, 只有頂部元素支持操作,所以不支持遍歷
2, 創建stack
通過stack<數據類型> 對象名, 可創建stack, 數據類型可以是標準數據類型, 也可以是自定義類型
2-1, 標準數據類型
//stack中元素數據類型為string
stack<string> s1;
2-2, 自定義數據類型
//stack中元素的數據類型為Myclass
stack<Myclass> s1;
2-3, 其他創建方式
stack<Myclass> s1;
//通過拷貝構造方式, 將一個已存在的s1, 拷貝給s2
stack<Myclass> s2(s1);
3, 操作stack
3-1, 賦值
由于stack是一個容器, 只支持將一個stack賦值給另外一個stack
stack<Myclass> s2 = s1;
3-2, 插入元素(push)
通過對象名.push(元素), 向stack中插入元素
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
Myclass m3("ccc", 3);
stack<Myclass> s1;
s1.push(m1);
s1.push(m2);
s1.push(m3);
3-3, 查詢元素
通過對象名.top(), 獲取棧頂元素
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
Myclass m3("ccc", 3);
stack<Myclass> s1;
s1.push(m1);
s1.push(m2);
s1.push(m3);
cout << s1.top().m_name << endl;
cout << s1.top().m_age << endl;
3-4, 刪除元素
通過對象名.pop(), 刪除棧頂元素
s1.pop();
3-5, 判斷是否為空
可通過對象名.empty(), 判斷棧是否為空, 為空返回0, 不為空返回1
cout << s1.empty() << endl;
3-6, 交換
可通過對象名1.swap(對象名2), 交換兩個棧的元素
s1.swap(s2);
3-7, 獲取長度
可通過s1.size(), 刪除棧頂元素
cout << s1.size() << endl;