10.2.4stack容器

Stack简介

²  stack是堆栈容器,是一种“先进后出”的容器。

²  stack是简单地装饰deque容器而成为另外的一种容器。

²  #include <stack>

stack对象的默认构造

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

stack <int> stkInt;            //一个存放int的stack容器。

stack <float> stkFloat;     //一个存放float的stack容器。

stack <string> stkString;     //一个存放string的stack容器。

...

//尖括号内还可以设置指针类型或自定义类型。

stack的push()与pop()方法

stack.push(elem);   //往栈头添加元素

stack.pop();   //从栈头移除第一个元素

stack<int> stkInt;

stkInt.push(1);stkInt.push(3);stkInt.pop();

stkInt.push(5);stkInt.push(7);

stkInt.push(9);stkInt.pop();

stkInt.pop();

此时stkInt存放的元素是1,5

stack对象的拷贝构造与赋值

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

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

stack<int> stkIntA;

stkIntA.push(1);

stkIntA.push(3);

stkIntA.push(5);

stkIntA.push(7);

stkIntA.push(9);

stack<int> stkIntB(stkIntA);             //拷贝构造

stack<int> stkIntC;

stkIntC = stkIntA;                                //赋值

stack的数据存取

²  stack.top();           //返回最后一个压入栈元素

stack<int> stkIntA;

stkIntA.push(1);

stkIntA.push(3);

stkIntA.push(5);

stkIntA.push(7);

stkIntA.push(9);

int iTop = stkIntA.top();             //9

stkIntA.top() = 19;                      //19

stack的大小

²  stack.empty();   //判断堆栈是否为空

²  stack.size();            //返回堆栈的大小

stack<int> stkIntA;

stkIntA.push(1);

stkIntA.push(3);

stkIntA.push(5);

stkIntA.push(7);

stkIntA.push(9);

if (!stkIntA.empty())

{

int iSize = stkIntA.size();           //5

}

示例代码:

#include<iostream>
using namespace std;
#include "stack" //栈模型
//栈的算法 和 数据类型的分离
void main51()
{
stack<int> s; //入栈
for (int i = ;i <;i++)
{
s.push(i+);
}
cout<<"栈的大小"<<s.size()<<endl; //出栈
while (!s.empty())
{
int tmp = s.top(); //获取栈顶元素
cout<<tmp<<" ";
s.pop(); //弹出栈顶元素
}
} //teacher节点
class Teacher
{
public:
int age;
char name[];
public:
void prinT()
{
cout<<"age:"<<age<<endl;
}
}; void main52()
{
Teacher t1,t2,t3;
t1.age = ;
t2.age = ;
t3.age = ; stack<Teacher> s;
s.push(t1);
s.push(t2);
s.push(t3); while (!s.empty())
{
Teacher tmp = s.top();
tmp.prinT();
s.pop();
}
} void main53()
{
Teacher t1,t2,t3;
t1.age = ;
t2.age = ;
t3.age = ; stack<Teacher *> s;
s.push(&t1);
s.push(&t2);
s.push(&t3); while(!s.empty())
{
Teacher *p = s.top();
p->prinT();
s.pop();
}
} void main()
{
main51();
main52();
cout<<"hello...\n"<<endl;
system("pause");
return;
}

资料来源:传智播客

C++STL学习笔记_(3)stack的更多相关文章

  1. C++STL学习笔记_(1)string知识

    /*============================================ string是STL的字符串类型,通常用来表示字符串 = ======================== ...

  2. STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较

    栈stack  .队列queue  和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现 ...

  3. C++STL学习笔记_(1)deque双端数组知识

    #include<iostream> using namespace std; #include "deque" #include "algorithm&qu ...

  4. C++STL学习笔记_(1)vector知识

    #include<iostream> using namespace std; #include "vector" //数组元素的 添加和删除 void main31( ...

  5. C++STL学习笔记_(4)queue

    10.2.5Queue容器 Queue简介 ²  queue是队列容器,是一种"先进先出"的容器. ²  queue是简单地装饰deque容器而成为另外的一种容器. ²  #inc ...

  6. C++STL学习笔记_(2)deque双端数组知识

    #include<iostream> using namespace std; #include "deque" #include "algorithm&qu ...

  7. Effective STL 学习笔记 39 ~ 41

    Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  8. Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value

    Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...

  9. Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据

    Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...

随机推荐

  1. I.MX6 shutdown by software

    /************************************************************************ * I.MX6 shutdown by softwa ...

  2. 12月2日,上海Cloud Foundry Summit, Azure Cloud Foundry 团队期待和你见面!

    12月2日,上海Cloud Foundry Summit, Azure Cloud Foundry 团队期待和你见面! 12日2日对中国Cloud Foundry的用户和开源社区来说,是极有意义的一天 ...

  3. erl0008 - unicode 和 utf-8之间的关系

    转载:http://blog.jobbole.com/84903/ 原文出处: 卢钧轶   欢迎分享原创到伯乐头条 本文将简述字符集,字符编码的概念.以及在遭遇乱码时的一些常用诊断技巧. 背景:字符集 ...

  4. 并行编译 Xoreax IncrediBuild

    好东西... http://pan.baidu.com/s/1BtZ4s

  5. UTF8存储与显示

    存储肯定是二进制存储,同一个字符(汉子)在不同的字符集下有对应的值,一个字符集相当于一个密码表,键名为字符,键值为二进制数(可表示为十进制,十六进制) UTF8是一个unicode字符集的编码规则,也 ...

  6. 【英语】Bingo口语笔记(24) - L的发音技巧

    舌头往上跑

  7. 【解题报告】POJ-1106 Transmitters

    原题地址:http://poj.org/problem?id=1106 题目大意: 给定一些平面的点以及一个圆心和半径,过圆心作一个半圆,求点在半圆中点最多多少个. 解题思路: 首先将给定点中和圆心的 ...

  8. xsheell的下载安装初级使用

    1)关于Xshell 网上更多的资料里提到的SSH客户端是putty,因为简单.开源.免费.但是也正是由于功能过于简单,所以在这里推荐大家使用Xshell. Xshell最初并不能免费使用,而且也没有 ...

  9. Oracle数据库中有关记录个数的查询

    一.查询表中全部的记录个数 可用两种方法,一种是在oracle的系统表中统计,另一种需要写存储过程统计,方法分别如下. 1.系统表中统计: SELECT sum(num_rows) FROM user ...

  10. Javascript 中的小括号 “()” 的多义性

    Javascript 中小括号有5 种语义 语义1:函数声明时参数表 1 function func(arg1, arg2){  2    // ...  3  }    语义2:和一些语句联合使用以 ...