10-stack
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。
c++ stl栈stack的头文件为:
#include <stack>
c++ stl栈stack的成员函数介绍
操作 比较和分配堆栈
empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素
stack 介绍
栈是一种容器适配器,特别为后入先出而设计的一种(LIFO ),那种数据被插入,然后再容器末端取出
栈实现了容器适配器,这是用了一个封装了的类作为他的特定容器,提供了一组成员函数去访问他的元素,元素从特定的容器,也就是堆栈的头取出袁术。
这个基础的容器可能是任何标准的容器类,和一些其他特殊设计的模板类,唯一的要求就是要支持一下的操作
- <span style="font-size:16px;"><strong>•</strong>back()
- •push_back()
- •pop_back()</span>
因此,标准的容器类模板vector, deque 和list可以使用,默认情况下,如果没有容器类被指定成为一个提别的stack 类,标准的容器类模板就是deque 队列。
实现C++ STL,栈有两个参数。
|
参数示意:
- T: 元素类型
- Container: 被用于存储和访问元素的的类型
成员函数
stack::stack
explicit stack ( const Container& ctnr = Container() );
用于构造一个栈适配器对象。
- ctnr
- Container object
Container is the second class template parameter (the type of the underlying container for thestack; by default: deque<T>, see class description).
- // test_stack.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <stack>
- #include <vector>
- #include <deque>
- #include <iostream>
- using namespace std;
- int _tmain(int argc, _TCHAR* argv[])
- {
- deque<int> mydeque(2,100);
- vector<int> myvector(2,200);
- stack<int> first;
- stack<int> second(mydeque);
- stack<int,vector<int> > third;
- stack<int,vector<int> > fourth(myvector);
- cout << "size of first: " << (int) first.size() << endl;
- cout << "size of second: " << (int) second.size() << endl;
- cout << "size of third: " << (int) third.size() << endl;
- cout << "size of fourth: " << (int) fourth.size() << endl;
- return 0;
- }
output:
size of first: 0 |
stack::empty
bool empty ( ) const;
判断是否为空。
Return Value
true if the container size is 0, false otherwise.
- // stack::empty
- #include <iostream>
- #include <stack>
- using namespace std;
- int main ()
- {
- stack<int> mystack;
- int sum (0);
- for (int i=1;i<=10;i++) mystack.push(i);
- while (!mystack.empty())
- {
- sum += mystack.top();
- mystack.pop();
- }
- cout << "total: " << sum << endl;
- return 0;
- }
Output:
total: 55 |
stack::pop
void pop ( );
在栈的顶部移除元素。
- // stack::push/pop
- #include <iostream>
- #include <stack>
- using namespace std;
- int main ()
- {
- stack<int> mystack;
- for (int i=0; i<5; ++i) mystack.push(i);
- cout << "Popping out elements...";
- while (!mystack.empty())
- {
- cout << " " << mystack.top();
- mystack.pop();
- }
- cout << endl;
- return 0;
- }
Output:
Popping out elements... 4 3 2 1 0 |
stack::push
void push ( const T& x );
在栈顶添加元素
- // stack::push/pop
- #include <iostream>
- #include <stack>
- using namespace std;
- int main ()
- {
- stack<int> mystack;
- for (int i=0; i<5; ++i) mystack.push(i);
- cout << "Popping out elements...";
- while (!mystack.empty())
- {
- cout << " " << mystack.top();
- mystack.pop();
- }
- cout << endl;
- return 0;
- }
Output:
Popping out elements... 4 3 2 1 0 |
stack::size
size_type size ( ) const;
计算栈对象元素个数
|
Output:
0. size: 0 |
stack::top
value_type& top ( );
const value_type& top ( ) const;
返回栈顶元素
- // test_stack.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <stack>
- #include <vector>
- #include <deque>
- #include <iostream>
- using namespace std;
- int _tmain(int argc, _TCHAR* argv[])
- {
- stack<int> mystack;
- mystack.push(10);
- mystack.push(20);
- mystack.top()-=5;
- cout << "mystack.top() is now " << mystack.top() << endl;
- return 0;
- }
Output:
mystack.top() is now 15 |
10-stack的更多相关文章
- [CareerCup] 9.10 Stack Boxes 垒箱子问题
9.10 You have a stack of n boxes, with widths w., heights hir and depths drThe boxes cannot be rotat ...
- 给jdk写注释系列之jdk1.6容器(10)-Stack&Vector源码解析
前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈. 什么是栈呢,我就不找它具体的定义了,直接举个例子,栈就相当于一个很窄的木桶 ...
- C# 队列(Queue)和 堆栈(Stack)
C# 队列(Queue)和 堆栈(Stack) C# 队列(Queue) 队列(Queue)代表了一个先进先出的对象集合.当您需要对各项进行先进先出的访问时,则使用队列.当您在列表中添加一项,称为入队 ...
- 在 WPF 程序中应用 Windows 10 真?亚克力效果
原文:在 WPF 程序中应用 Windows 10 真?亚克力效果 从 Windows 10 (1803) 开始,Win32 应用也可以有 API 来实现原生的亚克力效果了.不过相比于 UWP 来说, ...
- 1057 Stack
Stack is one of the most fundamental data structures, which is based on the principle of Last In Fir ...
- Go语言的堆栈分析
本文为理解翻译,原文地址:http://www.goinggo.net/2015/01/stack-traces-in-go.html Introduction 在Go语言中有一些调试技巧能帮助我们快 ...
- 可爱的Python_课后习题_CDay−2 完成核心功能
1. 在前文的grep 实现例子中,没有考虑子目录的处理方式,因为如果直接open 目录进行读grep 是古老实用且高效的模式文本匹配工具,在所有的Unix/Linux 系统中都会默认安装,它最常做的 ...
- 【转】 C++模板详解
C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有 ...
- jdk 编译器 对final字段的处理
class FinalTest{ void a(){ final int i=10; int j=10; } } stack=2, ...
- CareerCup All in One 题目汇总 (未完待续...)
Chapter 1. Arrays and Strings 1.1 Unique Characters of a String 1.2 Reverse String 1.3 Permutation S ...
随机推荐
- new String(tmp,1,nlen,"UTF8")
tmp是一个byte(字节)数组,如:['a','b','c'...],tmp[0]是去byte中的第一个,运算符&表示按位运算‘且’,就是前后值的二进制相同位有0取0,否则取1,如:2&am ...
- jeecg中一对多的关系映射
1.首先看一张前端页面: 有一张主表和3张子表,显示这3张子表的代码如下 <t:tabs id="tt" iframe="false" tabPositi ...
- java中Mongo
1. query.fields().include("idfa").include("imei").include("id").inclu ...
- (转)Inno Setup入门(七)——提供安装语言选项
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250803 Inno Setup安装目录下有一个Languages ...
- 10 删除topic中的数据
1 打开 server.properties2 添加一条: delete.topic.enable=true 3 执行命令: bin/kafka-topics.sh --delete ...
- RESTful基础知识
RESTful简介 互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写.翻译是"表现层状态转化". 如果一个架构符合RES ...
- python中nltk的下载安装方式
首先去http://nltk.org/install.html下载相关的安装程序,然后 在cmd窗口中,进入到python的文件夹内的 Scripts内,运行easy_install pip 安装Py ...
- C语言学习笔记---好用的函数memcpy与memset
这个主要用于我个人的学习笔记,便于以后查询,顺便分享给大家. 想必在用C的时候难免会与数组,指针,内存这几样东西打交道,先以数组为例,例如有一个数组int a[5] = {1, 2, 3, 4, 5} ...
- linux中find工具
find 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只要你具有相应的权限. ...
- 关于windows系统里locale、code page、ANSI编码的问题
最近把公司代码库里的代码同步下来之后编译了下,竟然出问题.问下同事说代码库肯定没问题,而我啥也没改,那到底那里出问题了呢? VS2018报的错误是:error RC2001: newline in c ...