前言
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<iostream>
#include<vector>
using namespace std;
namespace qyy
{template<class T,class contain>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<class T,class contain>,给第二个的参数的意义是我们可以调用不同的容器去实现stack的功能。
2.2测试代码
#include"stack.h"
void TestList()
{qyy::stack<int, vector<int>> s1;s1.push(1);s1.push(2);s1.push(3);s1.push(4);s1.push(1);while (!s1.empty()){cout << s1.top();s1.pop();}
}