写一个char类型的字符数组,对该数组访问越界时抛出异常,并做处理。
#include <iostream>using namespace std;
void fun(char (&a)[10],int i)
{if(i>=10){throw int();}else if(a==NULL){throw double();}cout<<"访问了第"<<i<<"位为:"<<a[i]<<endl;
}
int main()
{char a[10]="hello sed";int i=0;cout<<"输入访问位:"<<endl;cin>>i;try {fun(a,i);} catch (int) {cout<<"数组访问越界"<<endl;}catch (double){cout<<"入参为空,请检查"<<endl;}return 0;
}
使用模板类,实现顺序栈
#include <iostream>
using namespace std;
template <typename T>
class Stack
{
private:T* data;int top;int size;
public:Stack(int size);//构造函数~Stack();void Clear();//清空栈bool Empty();//判空bool Full(){return top==size-1;}//判满void Push(T elem);//入栈void Pop();//出栈void show(){for(int i=0;i<=top;i++){cout << data[i] << "->";}cout << endl;}//查看
};
template <typename T>
Stack<T>::Stack(int size):size(size)
{data = new T[size];if (data == NULL){exit(1);}top=-1;
}
template <typename T>
Stack<T>::~Stack()
{cout<<"S的析构"<<endl;delete[] data;
}
template <typename T>
void Stack<T>::Clear()
{if(Empty()){return;}top=-1;
}
template <typename T>
bool Stack<T>::Empty()
{return top==-1;
}
template <typename T>
void Stack<T>::Push(T e)
{if (Full()){return;}top++;data[top]=e;
}
template <typename T>
void Stack<T>::Pop()
{if (Empty()){cout << "栈为空" << endl;return;}cout << "出栈的元素为:" << data[top--] << endl;
}
int main()
{Stack <int>s1(5);for(int i=0;i<5;i++){int n;cout<<"输入栈值:"<<endl;cin>>n;s1.Push(n);}s1.show();cout << "---------------" << endl;for(int i=0;i<5;i++){s1.Pop();s1.show();cout << "---------------" << endl;}s1.Clear();s1.show();return 0;
}