stack的模拟实现

 前言 

        stack是容器适配器,它的底层是通过复用其他容器来实现的,STL中stack是通过deque来实现的。想要重复的理解stack的使用,对于去了解底层的原理 也是很重要的。接下来让我们一起来实现一下stack。

目录

1.stack的接口说明

2.stack的模拟实现

        2.1实现代码

        2.2测试代码


1.stack的接口说明

         详见:http://t.csdn.cn/2zV9G

2.stack的模拟实现

        因为stack是容器适配器,是通过特殊的成员函数来操作数据的,主要就是调用它的底层容器的接口来实现的,较为简单,让我们一起来实现一下吧!

        2.1实现代码

//stack.h文件
#pragma once
#include
#include
using namespace std;
namespace qyy
{
	template
	class stack 
	{
	public:
		bool empty()
		{
			return con.empty();
		}
		size_t size()
		{
			return con.size();
		}
		T& top()
		{
			return con.back();
		}
		void push(T data)
		{
			con.push_back(data);
		}
		void pop()
		{
			con.pop_back();
		}
	private:
		contain con;
	};
}

       注意:为了不跟标准库的stack冲突所以将它的实现通过命名空间封装起来,stack模板有两个参数:template,给第二个的参数的意义是我们可以调用不同的容器去实现stack的功能。 

        2.2测试代码

        

#include"stack.h"
void TestList()
{
	qyy::stack> s1;
	s1.push(1);
	s1.push(2);
	s1.push(3);
	s1.push(4);
	s1.push(1);
	while (!s1.empty())
	{
		cout << s1.top();
		s1.pop();
	}
}

你可能感兴趣的:(开发语言,c++,算法)