zoukankan      html  css  js  c++  java
  • StaticList

    到目前为止,我们还无法创建一个顺序存储结构线性表的对象出来,为什么呢?
    顺序存储空间究竟是什么,顺序存储空间的大小是多少?

    StaticList设计要点
    ——类模板
      使用原生数组作为顺序存储空间
      使用模板参数决定数组大小

    template <typename T, int N>
    class StaticList: public SeqList<T>
    {
    protected:
        T m_space[N]; //顺序存储空间,N为模板参数
    public:
        StaticList(); //指定父类成员的具体值
        int capacity() const; 
    };

    StaticList.h

    #ifndef STATICLIST_H
    #define STATICLIST_H
    
    #include "seqlist.h"
    
    namespace DTLib
    {
    template <typename T, int N>
    class StaticList: public SeqList<T>
    {
    protected:
        T m_space[N]; //顺序存储空间,N为模板参数
    public:
        StaticList() //指定父类成员的具体值
        {
            this->m_array = m_space;  //将父类的m_array这个指针指向子类的m_space这个数组
            this->m_length = 0;
        }
        int capacity() const
        {
            return N;
        }
    };
    }
    #endif // STATICLIST_H

    测试main.cpp

    #include <iostream>
    #include "Staticlist.h"
    
    using namespace std;
    using namespace DTLib;
    
    
    
    int main()
    {
        StaticList<int, 5> sl;
    
        for(int i=0; i<sl.capacity(); i++)
        {
            sl.insert(0,i);  //每次都在线性表的头部进行插入
        }
    
        for(int i=0; i<sl.length(); i++)
        {
            cout << sl[i] << endl;
        }
    
        return 0;
    }

     实验二:

    #include <iostream>
    #include "Staticlist.h"
    
    using namespace std;
    using namespace DTLib;
    
    
    
    int main()
    {
        StaticList<int, 5> sl;
    
        for(int i=0; i<sl.capacity(); i++)
        {
            sl.insert(0,i);  //每次都在线性表的头部进行插入
        }
    
        for(int i=0; i<sl.length(); i++)
        {
            cout << sl[i] << endl;
        }
    
        sl[5] = 10;
    
        return 0;
    }

     这个地方抛出了一个异常,因为我们在重载数组操作符时,已经指定了当越界时,就抛出IndexOutOfBoundsException这个类的异常信息。从这个地方,就可以看出抛出异常的好处了,当程序崩溃时,可以让我们快速的定位,如果不在重载数组操作符那个函数中抛出异常,我们将很难定位这种程序崩溃问题。

  • 相关阅读:
    html转义
    mongodb 数据库 基础使用
    xpath基本语法
    HTTP
    JavaScript笔记6-数组新方法
    JavaScript笔记5-事件
    JavaScript笔记3--标识符和保留字
    JavaScript笔记4-数组
    jquery笔记1--选择器
    JavaScript笔记2
  • 原文地址:https://www.cnblogs.com/-glb/p/12046709.html
Copyright © 2011-2022 走看看