STL之stack

一、stack(栈)

  栈:LIFO 后进先出;

  首先要指出的是,stack并非和STL的其他类模板是独立的容器,stack是自适应容器(容器适配器)

  stack<int, deque<int>>   s;

  stack<int, vector<int>>       s;

  stack<int, list<int>>           s;

  STL中实现的stack方法:

  s,empty();  s.size();  

  s.pop();    //弹出一个元素; 

  s.top();    //查看栈顶元素;   

  s.push(item)  //压入一个元素; 

示例代码如下:

 1 #include <iostream>
 2 #include <stack>
 3 #include <vector>
 4 #include <list>
 5
 6 using namespace std;
 7
 8 int main()
 9 {
10     //stack是自适应容器
11     stack<int, deque<int> >  a;
12     stack<int, vector<int> > b;
13     stack<int, list<int> >  c;
14
15     //默认于a一样是用deque做stack
16     stack<int>              d;
17     d.push(25);
18     d.push(10);
19     d.push(1);
20     d.push(5);
21
22     std::cout<< d.size() << std::endl;
23     int size = d.size();
24     for(int i=0;i<size;++i){
25         std::cout << "====="<< i << std::endl;
26         std::cout<<d.top() << std::endl;    //查看数据并返回
27         //std::cout<<d.pop() << std::endl;  //Error,查看数据并返回
28         d.pop();    //弹出数据,但不返回
29     }
30 }

  内容待补充.......

时间: 2024-10-24 15:26:40

STL之stack的相关文章

STL之stack适配器的实现框架

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 一提到适配器(adapter),我们就想到了早期用电话线上网所用的调制解调器,俗称"猫","猫"的作用是实现数模转化和模数转化,在客户端,它可以将电话的模拟信息转化为我们计算机能够接收的数字信息,所以猫相当于一个转换器.再举个更加好理解的例子来说明"适配器"的含义.相信在我们每个人的家里都有插排,假设就这么一种情况,现在我们家里的墙壁上只有一个三角的插口,而我们的电视却是两个口,怎么办?毫无疑问

C++ STL学习——stack

栈是最为常用的数据结构了,很多算法都是依靠栈来实现的,比如递归.我们要手动来实现栈,显得十分繁琐和麻烦,而且复用性不好.C++ 的STL中已经帮我们封装好了栈,我们只要方便的进行调用即可.该篇博客主要介绍STL 中stack的使用,stack应该说是STL中最简单的容器了.实例代码上传至  https://github.com/chenyufeng1991/STL_stack . (1)首先引入头文件 #include <stack>   .并使用命名空间:using namespace st

STL 之 stack 源码剖析

G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_stack.h 完整列表 /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fe

STL学习——Stack/Queue篇

STL学习--Stack/Queue篇 Stack 概述 stack是一种先进先出的数据结构,只有一个出口,stack允许新增元素,移除元素,取得最顶端元素.但除了最顶端外,没有任何办法可以存取stack其他元素.即不允许遍历行为. 实现 stack实现是以容器为底部结构的,将容器的接口改变,使其符合"先进先出"特性,便形成了一个栈.具体实现可以将底部deque的头端开口封闭,便实现了stack.因为stack具有"修改某物接口,形成另一种风貌"性质,故称为&quo

stl之stack容器

为了严格遵循堆栈数据后进先出原则,stack不提供元素的任何迭代操作,因此stack容器不会向外部提供可用的前向或反向迭代器类型. 头文件#include<stack> 创建stack对象 stack() 默认的构造函数,创建一个空的stack对象. stack<int> s; //使用默认的deque为底层容器,创建一个空的堆栈对象s. stack(const stack&) 复制构造函数,用一个stack堆栈创建一个新的堆栈. 元素入栈 stack堆栈容器的元素入栈函数

STL之stack 和 queue

这两种容器在STL中被称为是适配器,是对deque的一种限制容器,操作仅仅可以在头部或者是尾部进行. STL中的stack默认是用deque来实现的,但是我觉得用list实现第更高效一点,简单的slist就可以这样做. 当然也可以使用vector来进行实现,不过vector的生长确实是要考虑的范畴,因此觉得单纯的stack用单向列表进行实现就很好了. template <class _Tp, class _Sequence> class stack { // requirements: __S

stl(set+stack) LA 3634 The SetStack Computer

题目传送门 题意:给一些对集合的操作,询问每一次操作后栈顶的集合元素个数 分析:首先{}是空的,每一次add时候,{} -> { {} }变成了有一个元素的集合,利用set和stack,map容器能很方便解决这道题. if (!mp[s1]) mp[s1] = ++cnt; s2.insert (mp[s1]); } sta.push (s2); return s2.size (); } int intersect() { pop (); tmp.clear (); for (it=s1.beg

STL之stack,queue,优先队列

 1.stack,size(),empty(),pop()函数 #include<stack> #include <iostream> using namespace std; //通过push()方法入栈 //通过size()方法求栈中元素的个数 //通过empty()方法判断栈是否为空 //通过pop()求栈中最顶端的元素 void main() { int num; cin >> num; stack<int> mystack; for (; nu

STL容器 -- Stack

核心:后进后出, LIFO. 头文件: #include <stack> 常用的构造方法: stack<int> st1; //构造一个空的存放 int 型的栈 stack<int> st2(st1); //创建一个栈 st2 复制栈 st1 常用的操作: st.empty() //判断栈 st 是否为空,等效于 st.size() == 0, 但是相比较更块 st.push(elem) //将对象 elem 插入到 st 内,并使之称为第一元素 st.top() //