C++中stack容器的使用
目录
- 一、stack容器
- 1.1 简介
- 1.2 常用接口
一、stack容器
1.1 简介
① stack是一种先进后出的容器,它只有一个出口。
② 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为。
③ 栈中进入数据称为:入栈 push
④ 栈中弹出数据称为:出栈 pop
1.2 常用接口
① 功能描述:栈容器常用的对外接口。
② 构造函数:
stack stk; //stack采用模板类实现,stack对象的默认构造形式 stack(const stack &stk); //拷贝构造函数
③ 赋值操作:
stack& operator=(const stack &stk); //重载等号操作符
④ 数据存取:
push(elem); //向栈顶添加元素 pop(); //从栈顶移除第一个元素 top(); //返回栈顶元素
⑤ 大小操作:
empty(); //判断堆栈是否为空 size(); //返回栈的大小 #include<iostream> using namespace std; #include <stack> //栈stack容器 void test01() { //特点:符合先进后出数据结构 stack<int>s; //入栈 s.push(10); s.push(20); s.push(30); s.push(40); //只要栈不为空,查看栈顶,并且执行出栈操作 while (!s.empty()) { //查看栈顶元素 cout << "栈顶元素为:" << s.size() << endl; //出栈 s.pop(); } cout << "栈的大小:" << s.size() << endl; } int main() { test01(); system("pause"); return 0; }
运行结果:
栈顶元素为:4
栈顶元素为:3
栈顶元素为:2
栈顶元素为:1
栈的大小:0
请按任意键继续. . .
到此这篇关于C++中stack容器的使用的文章就介绍到这了,更多相关C++ stack容器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
C++中用两个标准容器stack,实现一个队列的方法详解
代码如下所示: 复制代码 代码如下: // StackToQueue.cpp : 定义控制台应用程序的入口点.//用两个标准容器stack,实现一个队列#include "stdafx.h"#include <iostream>#include <stack>using namespace std;template <class T>class StackToQueue{public: StackToQueue() { stack1; stack
-
C++栈(stack)的模板类实现代码
本文实例为大家分享了C++栈(stack)的模板类实现代码,供大家参考,具体内容如下 1.基本概念 栈中的元素遵守"先进后出"的原则(LIFO,Last In First Out) 只能在栈顶进行插入和删除操作 压栈(或推入.进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一 栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小 2.构造栈 可以使用数组构造栈,也可以使用单向链表构造,我觉得使用单向链表更加灵活方便,下
-
C++ 详细讲解stack与queue的模拟实现
目录 容器适配器 双端队列 概念 结构 deque迭代器 优缺点 stack模拟 queue模拟实现 容器适配器 适配器是一种设计模式(设计模式是一套反复使用的.大部分人知道的代码设计经验的总结),该模式试讲一个类的接口转化为用户希望的另一个接口,虽然stack与queue中也可以存放元素,但在STL中并没有将其划分为容器,而是成为容器适配器,这是因为stack与队列只是堆其他容器进行了包装,STL中的stack和queue是使用双端队列进行封装的. 双端队列 概念 它是一种双开口的连续空间数据
-
C++Stack栈类模版实例详解
目录 1.栈的介绍 2.栈实现 3.代码测试 总结 1.栈的介绍 栈的实现方式分为3种 基于静态数组实现,内部预设一个很大的数组对象, 实现简单,缺点是空间受限. 基于动态数组实现,内部预设一个容量值,然后分配一段内存空间数组,如果入栈大于默认容量值时,则再次扩大分配新的内存数组,并将旧数组拷贝至新数组及释放旧数组. 基于双向循环链表实现 栈的函数需要实现如下所示: T pop() : 出栈并返回栈顶元素 void push(const T &t) : 入栈 const T & top(
-
C++ STL容器stack和queue详解
stack是一个比较简单的容器,它的使用也很简单,stack是LIFO容器,就是后进先出,最后添加进去的元素,第一个取出来 stack初始化 std::stack<int> first; std::stack<int> second(first); std::stack<int, std;:vector<int>> third; //使用vector初始化stack ### stack常用方法### empty();//判断是否为空 push(Elem e)
-
C++详解实现Stack方法
目录 栈简介 stack模拟 示例代码 开发环境 运行结果 栈简介 栈本着先进后出的原则,来存取数据.作为数据结构中的一种,这里不多介绍相关栈.仅以此文记录C++中栈的实现,可帮助提升编程能力与对栈的理解. stack模拟 stack是一种容器适配器,专门在具有后进先出的上下文环境中,其删除只能是在一端进行操作. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出 .
-
C++stack与queue模拟实现详解
目录 stack与queue模拟实现 stack queue 为什么选择deque作为stack和queue的底层默认容器 总结 stack与queue模拟实现 在stl中,stack(栈)与queue(队列)都是容器适配器. 什么是容器适配器呢? 适配器(adaptor)是标准库中通用的概念,包括容器适配器.迭代器适配器和函数适配器.本质上,适配器是使一事物的行为类似于另一事物的行为的一种机制.容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现.简单来说其实就是利用现有的容
-
C++ stack与queue使用方法详细讲解
目录 Stack的介绍和使用 stack的默认定义的模板 stack的使用 queue的介绍和使用 queue的默认定义的模板 queue的使用 Stack的介绍和使用 stack的文档介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出. sta
-
C++中stack、queue、vector的用法详解
一.栈(stack) 引入头文件 #include<stack> 常用的方法 empty() 堆栈为空则返回真 pop() 移除栈顶元素 push() 在栈顶增加元素 size() 返回栈中元素数目 top() 返回栈顶元素 3.实例代码 #include<iostream> #include<stack> using namespace std; int main(){ //创建栈 s stack<int> s; //将元素压入栈 for(int i=0;
-
C++ STL中的容器适配器实现
1 stack 1.1 stack 介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作.back:获取尾部元素操作.pus
-
Docker 给运行中的容器设置端口映射的方法
一.概念 Docker 端口映射即映射容器内应用的服务端口到本机宿主机器. 二.实现 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射. 1. 随机映射 使用 -P 参数时,Docker 会随机映射一个端口到内部容器开放的网络端口,如下开启一个 nginx 服务: $ docker run -d -P nginx e93349d539119dc48dc841e117f6388d6afa6a6065b75a5b4aedaf5fb2a051fc
-
C++中vector容器的用法
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的. (5)使用迭代器访问元素. vector<int>::iterator it; for(it=vec.begi
-
Docker 中的容器完全解析
Docker 中的容器完全解析 Docker中的容器可以看成是镜像的一个运行环境,它带有额外的可写文件层. 一.创建容器: 1.新建容器: docker create -it --name [CONTAINERNAME] [NAME]:[TAG] 比如: docker create -it --name container ubuntu:add /bin/bash 此为根据镜像的名称创建容器,容器的名称为container 2.查看容器详情列表: docker ps -a 可以查看到容器的ID,
-
JavaScript实现Java中Map容器的方法
本文实例讲述了JavaScript实现Java中Map容器的方法.分享给大家供大家参考,具体如下: 声明一下,JavaScript和Java的区别就像雷锋和雷峰塔的区别. 在Java中,Map是一种集合,用来存储Key-Value键值对的容器.根据键得到值,因此不允许键重复(重复了的覆盖),但允许值重复.JavaScript中的对象特性,就是不允许有相同的属性存在,和Java的Map非常的相似,所以可以利用这个特性在JavaScript中来实现Map容器,实现基本的增删查的操作. functio
-
Java开发中的容器概念、分类与用法深入详解
本文实例讲述了Java开发中的容器概念.分类与用法.分享给大家供大家参考,具体如下: 1.容器的概念 在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 2.容器与数组的关系 之所以需要容器: ① 数组的长度难以扩充 ② 数组中数据的类型必须相同 容器与数组的区别与联系: ① 容器不是数组,不能通过下标的方式访问容器中的元素 ② 数组的所有功能通过Arraylist容器都可以实现,只是实现的方式不
-
c++中stack、queue和vector的基本操作示例
前言 这几天在接触搜索的题目,用bfs时基本都用到队列,就顺便学习了数据结构的栈.队列.本文将详细给大家介绍关于c++中stack.queue和vector的基本操作,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. stack 的基本操作有: 入栈,如例:s.push(x); 出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素. 访问栈顶,如例:s.top() 判断栈空,如例:s.empty() ,当栈空时,返回true. 访问栈中的元素个数,如例:s.
-
C++中vector容器使用详细说明
在c++中,vector是一个十分有用的容器,下面通过本文给大家介绍C++中vector容器使用详细说明,具体介绍如下所示 1. 在C++中的详细说明 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库. vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. 2. 使用vector,必须在你的头文件中包含下面的代码: #include vec
-
java中stack(栈)的使用代码实例
java中stack类继承于vector,其特性为后进先出(lastinfirstout). 入栈和出栈实例图: 实例图的java代码实例: package com.lanhuigu.java.ListTest; import java.util.Stack; public class StackTest { public static void main(String[] args) { Stack<String> staffs = new Stack<String>(); //
随机推荐
- js实现form自动完成功能
- Git发现git push origin master 报错的解决方法
- 关于Linux安装mysql默认配置文件位置详解
- 怎么重置mysql的自增列AUTO_INCREMENT初时值
- .NET C#使用微信公众号登录网站
- zend framework配置操作数据库实例分析
- Android ViewPager相册横向移动的实现方法
- PHP中session使用方法详解第1/2页
- Android中 自定义数据绑定适配器BaseAdapter的方法
- 解决vue-cli中stylus无法使用的问题方法
- Javascript技巧之不要用for in语句对数组进行遍历
- 谈谈linux中flock、lockf和fcntl的区别
- 101个shell脚本 猜数字游戏代码
- 浅谈C++11新引入的lambda表达式
- sql 分组查询问题
- jQuery控制frames及frame页面JS的方法
- 如何使用jQuery来处理图片坏链具体实现步骤
- js判断变量是否未定义的代码
- C#使用DataSet Datatable更新数据库的三种实现方法
- 给大家分享几个常用的PHP函数