1.序言

        STL (Standard Template Library)是C++标准库提供的一套模板类和算法的集合,其中包含了许多常用的数据结构和算法,方便程序员使用和扩展。STL中的stack和queue是两种常用的容器适配器,可以通过使用不同的容器作为底层实现来提供不同的行为。

  1. STL stack(栈):

    • 栈是一种后进先出(LIFO)的数据结构,只能从容器的一端进行插入和删除操作。
    • STL stack适配器提供了对栈的封装,使用时只需要关注栈的操作,而不需要关心底层容器的实现细节。
    • 栈的常见操作有入栈(push)、出栈(pop)、查看栈顶元素(top)等。
  2. STL queue(队列):

    • 队列是一种先进先出(FIFO)的数据结构,只能从容器的一端进行插入操作,从另一端进行删除操作。
    • STL queue适配器提供了对队列的封装,使用时只需要关注队列的操作,而不需要关心底层容器的实现细节。
    • 队列的常见操作有入队(push)、出队(pop)、查看队首元素(front)、查看队尾元素(back)等。

        STL提供的stack和queue适配器默认使用deque(双端队列)作为底层容器,也可以使用vector或list作为底层容器,根据实际需求选择不同的底层容器以满足性能和功能要求。

        这里我们用vector和queue作为底层容器。

2. STL stack

        太简单,没什么可说的,直接上代码:(用vector作为底层容器)

#pragma once
#include<iostream>
#include<vector>
using namespace std;
namespace zy
{
	template<class T,class Container = vector<T>>
	class stack
	{
	public:
		void push(const T& t)
		{
			_con.push_back(t);
		}
		void pop()
		{
			_con.pop_back();
		}
		const T& top() const
		{
			return _con.back();
		}
		 T& top()
		{
			return _con.back();
		}
		size_t size() const
		{
			return _con.size();
		}
		bool empty() const
		{
			return _con.empty();
		}


	private:
		Container _con;
	};
}

3. STL queue

        同样,直接上代码:(用list作为底层容器)

#pragma once
#include<iostream>
#include<list>
using namespace std;
namespace zy
{
	template<class T, class Container = list<T>>
	class queue
	{
	public:
		void push(const T& t)
		{
			_con.push_back(t);
		}
		void pop()
		{
			_con.pop_front();
		}
		const T& front()
		{
			return _con.front();
		}
		const T& back()
		{
			return _con.back();
		}
		size_t size() const
		{
			return _con.size();
		}
		bool empty() const
		{
			return _con.empty();
		}


	private:
		Container _con;
	};
}
07-13 02:07