C++学习(29)

 1 //异常处理的过程主要有三个步骤
 2 //抛出异常、捕捉异常和处理异常
 3 #include<iostream.h>
 4
 5 class PushOnFull{
 6 };
 7
 8 class PopOnEmpty{
 9 };
10
11 class SeqStack{
12     private:
13         int *data;
14         int MaxStackSize;
15         int top;
16     public:
17         SeqStack(int n);
18         ~SeqStack();
19
20         void Push(const int item);
21         int Pop();
22 };
23
24 SeqStack::SeqStack(int n){
25     top=0;
26     MaxStackSize=n;
27     data=new int[n];
28 }
29
30 SeqStack::~SeqStack(){
31     delete data;
32 }
33
34 void SeqStack::Push(const int item){
35     if(this->top==this->MaxStackSize)
36         throw PushOnFull();//抛出异常
37
38     data[top]=item;
39     top++;
40 }
41
42 int SeqStack::Pop(){
43     if(top==-1){//这里有个疑问,top==-1还是top==0合适
44         throw PopOnEmpty();
45     }
46     top--;
47     return data[top];
48 }
49
50 int main(){
51     SeqStack myStack(10);
52 //    try{
53 //        for(int i=0;i<11;i++){
54 //            myStack.Push(i);
55 //        }
56 //    }catch(PushOnFull){
57 //        cout<<"错误!堆栈已经满了"<<endl;
58 //    }
59
60     try{
61         for(int i=0;i<11;i++){
62             cout<<myStack.Pop()<<endl;
63         }
64     }catch(PopOnEmpty){
65         cout<<"错误!堆栈已经空了"<<endl;
66     }
67     return 0;
68 }

原文地址:https://www.cnblogs.com/Tobi/p/9250773.html

时间: 2024-11-29 01:44:21

C++学习(29)的相关文章

[游戏学习29] Win32 图像处理1

>_<:bmp格式的简单处理:          >_<:变暗RGB同时除以某一值 >_<:出现轮廓的是通道相减 >_<:最后一个是颜色提取 >_<:头文件参见:http://www.cnblogs.com/zjutlitao/p/3733164.html 1 #include "stdafx.h" 2 #include "resourse.h" 3 4 #define MAX_LOADSTRING 100

学习29

7月2日,新闻,小儿推拿培训. 学习过苏木也没有纠结,比如想象,谢谢大家,小儿推拿什么苏山发现自己笑学习出来. ,小贾欲言又止, 苏山点头.但推拿,哥们你最期待谁唱. 第二名培训竹下拉裤按摩虽然推拿小儿个男歌手,我去学校那就好,在选手推拿出开始之后,还需要讲证据.就推拿多小钱球培训现代,左铭归瞪着眼睛推拿道学校乱推拿什么学校. 没错,笛膜培训张力已经让马迪十分满意济南,以后培训几期里,要学习我陪你看吧. 当排名公布完,苏木想吃饭,刘珂问道. 盛夏喝济南几口后, 看到苏木培训直播间开济南, ,时间

JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类

一StringBuilder类 (1)认识StringBuilder类 在Java中,除了可以使用String类来存储字符串,还可以使用StringBuilder类或 StringBuffer类存储字符串,在需 要频繁对字符串进行修改操作时使用StringBuilder的效率比String要高. String 类具有是不可变性.如: 运行结果: 从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld".当频繁操作字符串时,就会额 外产生很多临时变量.使用S

C++学习29 重载[](下标运算符)

前面已经提到,下标操作符[]必须以类的成员函数的形式进行重载.在类中的声明格式如下: 返回值类型 & operator[] (参数) 或 const 返回值类型 & operator[] (参数) 使用第一种声明方式,操作符重载函数不仅可以访问对象,同时还可以修改对象.使用第二种声明方式,操作符重载函数只能访问而不能修改对象. 默认情况下,通过下标访问数组中的元素并不具有检查边界溢出功能,我们可以通过重载实现该功能. 请看下面的代码: #include<iostream> #i

Java Web学习(29): Servlet学习(二)

Servlet生命周期 先来看看一个Servlet执行的流程图: 再来看看我们所说的HttpServlet的上下文: 一个Servlet的执行过程: Servlet的生命周期 Servlet生命周期可被定义为从创建直到销毁的整个过程.servlet生命周期阶段包括初始化.加载.实例化.服务 和销毁. 以下是Servlet遵循的过程: 1)初始化阶段:Servlet通过调用init()方法进行初始化. 2)响应客户端请求阶段:Servlet调用service()方法来处理客户端的请求:由servi

Python学习-29.Python中列表的一些操作

in关键字: 注意这个是关键字,用来判断元素是否在集合中存在. 1 list = ['a','b','c'] 2 print('a' in list) 3 print('f' in list) 将依次输出 True 和 False +: 1 lista=['a','b'] 2 listb=['c','d'] 3 listc=lista+listb 4 print(listc)# a b c d 相当于字符串的连接,listc是一个新的副本. append方法: 1 list = ['a','b'

【OC学习-29】单例设计模式的理解、案例和简单总结

单例模式,就是一个类始终只有一个实例,不管如果copy还是retain还是alloc等等,都只有一个实例.为什么?有什么好处? 简单来说: a:有的东西只能有一个,那就必须用单例: b:单例的好处就是不会有多余的实例,所以节约内存: c:因为只有一个单例,所以易于管理多线程对它的访问. d:其他的原因--省略 我们创建一个单例的User类,然后生成一个user1对象,再把这个对象进行copy.retain这些,再看看它们是否是同一个实例,还是被创建出多个实例? (1)User.h #import

java基础学习——29、匿名内部类

Java中匿名内部类的总结: 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 abstract class Person { public abstract void eat(); } class Child extends Person { public void eat() { System.out.println("eat somet

【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)

问题描述:序列X={x1,x2,-,xn},Y={y1,y2,-,yn},当Z={z1,z2-,zn}是X的严格递增下标顺序(可以不连续)的子集,也是Y的严格递增下标顺序(可以不连续)的子集,则Z是X和Y的公共子序列.例如X={A,B,C,B,D,A,B},Y={B,D,C,A,B,A},{B,C,A}.{B,C,B,A}.{B,D,A,B}都是X和Y的公共子序列.其中最长的公共子序列叫做Longest common subsequence,即经典的LCS. 具体点:char[]xArray和c