C++ stack容器

stack是堆棧容器,是一種“先進後出”的容器。
如圖:
在這裏插入圖片描述
唯有等最後面進來的車子出去後,裏面的車子纔可以陸陸續續的出來!

stack是基於deque容器而實現的容器。

使用需包含頭文件#include <stack>


定義
stack<int> s1;	// 默認使用deque存儲元素
//stack<int, deque<int>> s1;

// 可以自行修改爲其他容器存儲元素
stack<int, vector<int>> ss1;
stack<int, list<int>> ss2;

stack<double> s2;
stack<char> s3;

stack<int> s4(s1);	// 拷貝構造
s1 = s4;			// 賦值重載

// 元素入棧
s1.push(1);

// 元素出棧
s1.pop();

// 返回最後一個入棧的元素
s1.top();
因其返回的是引用,所以可以直接進行賦值:s1.top() = 10; // 可以進行修改

// 判斷容器是否爲空
s1.empty();

// 獲取棧裏面的元素個數
s1.size();

// 交換棧中的元素
s1.swap(s4);


注意: stack容器沒有迭代器,所以如果想要輸出容器裏面的值,唯有一下方法:

while (!s1.empty()) {			// 如果不爲空則繼續執行
	cout << s1.top() << " ";	// 輸出最後一個入棧的值
	s1.pop();					// 最後一個元素出棧
}
cout << endl;

測試代碼:

#include <iostream>
#include <Windows.h>
#include <stack>
#include <vector>
#include <list>

using namespace std;

int main(void) {
	stack<int> s1;	// 默認使用deque存儲元素
	//stack<int, deque<int>> s1;
	stack<int, vector<int>> ss1;
	stack<int, list<int>> ss2;
	
	stack<double> s2;
	stack<char> s3;

	stack<int> s4(s1);	// 拷貝構造
	s1 = s4;			// 賦值重載

	// 元素入棧
	s1.push(1);
	s1.push(3);
	s1.push(5);

	// 元素出棧
	s1.pop();

	// 返回最後一個入棧的元素
	s1.top();	// s1.top() = 10;	// 可以進行修改


	// 判斷棧是否爲空
	if (!s1.empty()) {
		// 獲取棧裏面的元素個數
		cout << s1.size() << endl;
	}

	// 交換棧中的元素
	s1.swap(s4);

	while (!s1.empty()) {			// 如果不爲空則繼續執行
		cout << s1.top() << " ";	// 輸出最後一個入棧的值
		s1.pop();					// 最後一個元素出棧
	}
	cout << endl;

	system("pause");
	return 0;
}

STL其他容器學習鏈接:

  1. C++ priority_queue優先級隊列容器

  2. C++ queue隊列容器

  3. C++ map 和 multimap 容器

  4. C++ set 和 multiset 容器

  5. C++ list容器

  6. C++ deque容器

  7. C++ vector容器

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