stack的模拟实现

news/2024/12/2 20:53:05/

 前言 

        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();}
}


http://www.ppmy.cn/news/100352.html

相关文章

任务系统(二)

文章逻辑关系&#xff0c;确定音符&#xff0c;为逻辑简谱。.以NPC的对话&#xff0c;确定音慕任务&#xff0c;以逻辑关系&#xff0c;符合逻辑简谱&#xff0c;接取任务&#xff0c;获得道具奖励。 解释&#xff1a; 这是一个基于对话的任务系统。它由以下几部分组成&#…

跨域 + 四种解决办法

目录 同源策略 解决方案 1、jsonp 2、前端代理 3、后端解决 4、Nginx代理 同源策略 说到跨域就不得不提到同源策略&#xff0c;什么是同源策略&#xff1f; 请求的时候拥有相同的 协议 域名 端口 只要有一个不同就属于跨域 解决方案 解决跨域问题一共有四种方式&#xff…

HashMap 1.8全流程分析,详解put、resize、遍历等相关函数。以及其内部的二进制原理

简介 从常用属性->构造方法->添加->扩容->查询->删除->遍历的顺序进行HashMap源码阅读&#xff0c;涉及到一些二进制的用法以及意义也会进行说明。 HashMap源码解析 简介 HashMap采用了hash 表的数据结构进行实现&#xff0c;在key未存在hash冲突的情况下&…

c#快速入门(2)

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;类、对象、类成员简介&#x1f449;&#x1f3fb;语句…

浅尝RTSP

RTSP (real time streaming protocol) RTC2326 RTSP 实时流传输协议,是TCP/IP 协议体系中的一个应用层协议,由哥伦比亚大学, 网景和realnetworks公司提交的IETF RTC 标准&#xff0c;该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP在体系结构上位于 rtp…

linux互斥锁(pthread_mutex)知识点总结

对于多线程程序来说&#xff0c;我们往往需要对这些多线程进行同步。同步&#xff08;synchronization&#xff09;是指在一定的时间内只允许某一个线程访问某个资源。而在此时间内&#xff0c;不允许其它的线程访问该资源。我们可以通过互斥锁&#xff08;mutex&#xff09;&a…

二分搜索树层序遍历

二分搜索树的层序遍历&#xff0c;即逐层进行遍历&#xff0c;即将每层的节点存在队列当中&#xff0c;然后进行出队&#xff08;取出节点&#xff09;和入队&#xff08;存入下一层的节点&#xff09;的操作&#xff0c;以此达到遍历的目的。 通过引入一个队列来支撑层序遍历…

c++—文件编程

1. c对文件的操作是由文件流类完成的&#xff0c;文件流类在流类与文件间建立连接&#xff1b; 2. 文件流类型 ①文件输入流&#xff1a;ifstream ②文件输出流&#xff1a;ofstream ③文件输入/输出流&#xff1a;fstream 3. 语法 ①定义文件流类的对象 ifstream ifile; …