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容器

发布了47 篇原创文章 · 获赞 37 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/cpp_learner/article/details/104857145