写一个char类型的字符数组,对该数组访问越界时抛出异常,并做处理。
cpp
#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;
}
使用模板类,实现顺序栈
cpp
#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;
}