首页 > 编程语言 >C++ 适配器 stack

C++ 适配器 stack

时间:2024-08-13 22:25:59浏览次数:14  
标签:容器 适配器 C++ 链表 push 数据结构 stack

不了解适配器的读者可以先去看一看这一篇博客:C++ 适配器-CSDN博客

栈数据结构介绍

我们平时洗碗的时候,叠成一层层的碗最后只能从上面往下面开始拿;平时箱子里面叠的衣服,也是只能从上面慢慢拿。先放进去的东西后拿出来,这种内存特点的数据结构就叫栈。

就像一个只有单边口的容器,数据只能从上面进,也只能从上面出。

针对于这种内存特点,我们可以用数组(或顺序表)来实现,从数组末尾进行插入和删除;同时我们也可以用链表,把链表的头作为栈的出口进行进出(链表的头插和头删)操作。甚至双向链表情况下两头都可以;同时我们也可以用双端队列,双端队列的头插头删和尾插尾删操作都很便利。

因为stack可以用很多其他的数据结构来实现,所以stack就被定义为了迭代器而不是容器,因为本质还是其他容器的套用。

stack的相关函数

stack的函数很少,因为它的结构限制很多,只允许一方进一方出,导致什么迭代器等都没有。

构造函数

第一个就是只传容器类型,第二个。和第一个差不多,就是缺省参数的右值引用。后面的就是加了一个内存池。

具体看这个例子就行了,我们用的最多的就是默认构造。

empty

判断是否为空,是为真反之为假

size

返回栈的大小

top

返回栈顶的元素

push

入栈一个元素

emplace

和push功能一样,但是在某些场景下比push的效率高,目前作者还不知其原理。

pop

出栈一个元素

swap

保证容器一样的情况下交换两个栈的内部数据。

适配器stack的实现

stack函数少,底层又是用的已经实现好的容器,所以很方便实现:

标签:容器,适配器,C++,链表,push,数据结构,stack
From: https://blog.csdn.net/2301_80772499/article/details/141169225

相关文章

  • C++入门基础知识12
    C++的关键字(接上一篇博文)!! 1.asmasm(指令字符串):允许在C++程序中嵌入汇编代码。2.autoauto(自动,automatic)是存储类型标识符,表明变量"自动"具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。3.boolbool(布尔)类型,C++中的基本数据结构,其值......
  • 微软NET FrameWork离线运行库+离线安装包合集,一键安装版 微软.NET离线运行库合集2024
     微软.NET离线运行库合集2024最新版是一款专为便捷、高效地管理.NET运行库而设计的工具。这款软件集成了各种版本的.NET运行库,并提供了离线安装的功能,使用户能够在没有网络连接的情况下轻松地安装所需的运行库。该软件的出现极大地简化了.NET开发环境的配置和维护过程。用户可......
  • CMake 构建 C++ 项目
    使用CMake构建C++项目便于跨平台开发,在Linux上可以生成makefile,并通过make来进行编译。在Windows上可以生成.sln项目,并结合VS继续进行开发,或MSVC编译器来直接将项目编译成目标文件。1、创建.cpp文件,以编译成exe程序#include<iostream>intmain(){printf("h......
  • 【自用10.2】C++结构体-指向结构体的指针&使用结构体传递值
    指向结构体的指针#include<stdio.h>#include<stdlib.h>#include<string.h>struct_friend{charname[32];charsex;//m-男f-女intage;};intmain(void){struct_friendgirl={"小珑",'f',18};stru......
  • 【自用11.】C++枚举
    概念当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。 枚举类型的定义enum枚举名{枚举元素1,枚举元素2,……};//例如e......
  • 第18 章探讨 C++新标准 移动构造函数解析,强制移动
    第18章探讨C++新标准移动构造函数解析,强制移动第18章探讨C++新标准移动构造函数解析,强制移动文章目录第18章探讨C++新标准移动构造函数解析,强制移动18.2.5强制移动程序清单18.3stdmove.cpp18.2.5强制移动移动构造函数和移动赋值运算符使用右值。如果......
  • C/C++指针无关联,因为它指向已销毁的实例
    一、概述在使用Qt+OpenCV做项目的过程中,发现一个问题。指针无关联,因为它指向已销毁的实例产生这个问题的代码如下:constchar*GLSquareWindow::readFileToString(QStringresPath){QFilevertexShaderFile(resPath);if(!vertexShaderFile.open(QIODev......
  • 详解C++的四大特性(封装,继承,多态,抽象)
    C++的四大特性是面向对象编程(OOP)的核心概念,分别是封装、继承、多态和抽象。这些特性共同构成了C++作为面向对象编程语言的基础。1.封装(Encapsulation)概念:封装是将数据和操作数据的方法绑定在一起,限制对数据的直接访问。通过将数据隐藏在类内部,只暴露必要的接口(如public成......
  • SQL进阶技巧:利用Stack()函数进行列转行及动态列转行方法
    目录0需求描述1数据分析 2 stack()函数应用stack(intn,v_1,v_2,...,v_k)n设为3,将后面6个元素按顺序分为3行2列n设为2,将后面6个元素按顺序分为2行3列n设为3,将后面7个元素按顺序分为3行3列n设为6,将后面6个元素转为为6行1列 3小结0需求描述在hive数仓中......
  • C++面试
    1.讲一讲封装、继承、多态是什么?封装:将具体实现过程和数据封装成一个类,只能通过接口进行访问,降低耦合性,使类成为一个具有内部数据的自我隐藏能力、功能独立的软件模块。意义:保护或防止代码在无意之中被破坏,保护类中的成员,不让类中以外的程序直接访问或者修改,只能通过提供的公共接......