4.2C++

写一个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;
}
相关推荐
小俊俊的博客17 分钟前
海康RGBD相机使用C++和Opencv采集图像记录
c++·opencv·海康·rgbd相机
_WndProc32 分钟前
C++ 日志输出
开发语言·c++·算法
薄荷故人_34 分钟前
从零开始的C++之旅——红黑树及其实现
数据结构·c++
m0_7482400234 分钟前
Chromium 中chrome.webRequest扩展接口定义c++
网络·c++·chrome
qq_4335545441 分钟前
C++ 面向对象编程:+号运算符重载,左移运算符重载
开发语言·c++
努力学习编程的伍大侠1 小时前
基础排序算法
数据结构·c++·算法
yuyanjingtao1 小时前
CCF-GESP 等级考试 2023年9月认证C++四级真题解析
c++·青少年编程·gesp·csp-j/s·编程等级考试
闻缺陷则喜何志丹2 小时前
【C++动态规划 图论】3243. 新增道路查询后的最短距离 I|1567
c++·算法·动态规划·力扣·图论·最短路·路径
charlie1145141912 小时前
C++ STL CookBook
开发语言·c++·stl·c++20
小林熬夜学编程2 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http