首页 > 其他分享 >stl容器

stl容器

时间:2023-12-04 23:13:16浏览次数:28  
标签:容器 stl 元素 pop --- push stack

3.5 stack容器

3.5.1 stack 基本概念

 

概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口

 

 

 

栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为

栈中进入数据称为 --- 入栈 push

栈中弹出数据称为 --- 出栈 pop

 

生活中的栈:

 

 

 

 

 

3.5.2 stack 常用接口

功能描述:栈容器常用的对外接口

 

构造函数:

  • stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式

  • stack(const stack &stk); //拷贝构造函数

赋值操作:

  • stack& operator=(const stack &stk); //重载等号操作符

数据存取:

  • push(elem); //向栈顶添加元素

  • pop(); //从栈顶移除第一个元素

  • top(); //返回栈顶元素

大小操作:

  • empty(); //判断堆栈是否为空

  • size(); //返回栈的大小

 

 

示例:

#include <stack>

//栈容器常用接口
void test01()
{
//创建栈容器 栈容器必须符合先进后出
stack<int> s;

//向栈中添加元素,叫做 压栈 入栈
s.push(10);
s.push(20);
s.push(30);

while (!s.empty()) {
//输出栈顶元素
cout << "栈顶元素为: " << s.top() << endl;
//弹出栈顶元素
s.pop();
}
cout << "栈的大小为:" << s.size() << endl;

}

int main() {

test01();

system("pause");

return 0;
}

总结:

  • 入栈 --- push

  • 出栈 --- pop

  • 返回栈顶 --- top

  • 判断栈是否为空 --- empty

  • 返回栈大小 --- size

 

 

 

 

 

3.6 queue 容器

3.6.1 queue 基本概念

 

概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口

 

 

 

 

队列容器允许从一端新增元素,从另一端移除元素

队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为

队列中进数据称为 --- 入队 push

队列中出数据称为 --- 出队 pop

 

生活中的队列:

标签:容器,stl,元素,pop,---,push,stack
From: https://www.cnblogs.com/muzhaodi/p/17876246.html

相关文章

  • 为什么stack和queue默认使用deque作为底层容器?
    在C++中,stack和queue默认使用deque作为底层容器的原因主要有以下几点:操作效率:deque(双端队列)支持在头尾两端进行插入和删除操作,且时间复杂度都为O(1),非常高效1。而vector在增长到一定长度时为了保证完全连续,需要重新申请更长的内存,并把原来的元素全部拷贝过去2。这使得vector......
  • stack和queue的底层容器封装 以及提供随机存储的容器
    在C++中,std::stack和std::queue是容器适配器,它们提供了特定的接口,依赖于某个容器类(如std::deque或std::list)来处理元素1。std::stack:std::stack默认使用std::deque作为其底层容器2。但是,你也可以在创建std::stack对象时指定其他的底层容器,只要这个容器支持......
  • Linux 上的容器技术
    容器实现封闭的环境主要要靠两种技术,一种是看起来是隔离的技术,称为namespace(命名空间)。在每个namespace中的应用看到的,都是不同的IP地址、用户空间、进程ID等。另一种是用起来是隔离的技术,称为cgroup(网络资源限制),即明明整台机器有很多的CPU、内存,但是一个应用只能用其中的......
  • stl中迭代器的删除
    Z1584.noip题海战Description某校举行了k场集训,集训有两种方式:比赛和训练对于每场比赛,他要保证所出的所有试题,对于所有学生来说,都是从来没有做过的而对于每场训练,他要保证所出的所有题都被每一个参赛学生做过。FormatInput第一行2个正整数n和m,表示学生数和试题总数第2~n+1行......
  • [Docker]如何添加文件卷到已存在的docker容器
    情景描述在业务部署的前期,docker只映射了一部分文件卷,在业务运行一段时间后,发现还有新的文件卷需要被映射,那如何快速实现?对于一个已经存在的容器Container,添加文件卷不能像新建容器时那样直接使用-v参数操作。操作前提是:你至少需要关停容器一次,需要计划停机时间和日期(规划),通知受影......
  • 在OI类竞赛中经常使用的C++STL模板类
    vector变长数组vector的初始化vector<int>a;//定义一个空的vector,且元素类型为intvector<int>a(n);//定义一个长度为n,元素类型为int的vector,且每个元素都是0vector<int>a(n,x);//定义一个长度为n,元素类型为int,且每个元素都是x的vectorvector<int>b(a);//定义一......
  • 【Java】嵌入式版东方通Web容器中台后端项目静态资源访问
    嵌入式东方通Web版本:7.0.E.6_P3~ 7.0.E.6_P6首先直接说结论,内置化东方通Web容器的基准版本较低。对静态资源访问配置必须使用一下语法#静态资源访问配置spring:resources:static-locations:classpath:/resources/,classpath:/static/,file:/opt/app/FileRo......
  • Docker|--镜像中既有gcc和.NET运行时, 但是容器启动的时候报错 exec: "dotnet": exec
    基本信息#镜像gcc_for_net7_image是如何产生的,分为3步1.基于gcc的镜像运行起来的一个包含了gcc环境的容器,2.在这个容器里安装了.NET7运行时,3.再将这个包含了gcc环境和.NET7的容器打包为一个镜像"gcc_for_net7_image"总之,这个镜像"gcc_for_net7_image"既包含了gcc......
  • Docker 安装 Redis 容器 (完整详细版)
    1、获取Redis镜像Docker如果想安装软件,必须先到Docker镜像仓库下载镜像。Docker镜像仓库2、下载Redis镜像命令描述dockerpullredis下载最新版Redis镜像(其实此命令就等同于:dockerpullredis:latest)dockerpullredis:xxx下载指定版本的Redis......
  • 像使用stl一样使用线段树 ——AtCoder Library(转载https://zhuanlan.zhihu.com/p/459
    地址:https://zhuanlan.zhihu.com/p/459579152 我这里翻译一下官方的文档。首先需要满足几个性质。(注意 ∗ 是个操作,不是单纯的一个乘号)1)操作满足结合律即 (a∗b)∗c=a∗(b∗c)2)操作需要有个幺元(基本元/单位元)a∗e=e∗a=a如果你有这个一个序列S,长度为N ,接下......