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 = ;
}
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, > sl; for(int i=; i<sl.capacity(); i++)
{
sl.insert(,i); //每次都在线性表的头部进行插入
} for(int i=; i<sl.length(); i++)
{
cout << sl[i] << endl;
} return ;
}
实验二:
#include <iostream>
#include "Staticlist.h" using namespace std;
using namespace DTLib; int main()
{
StaticList<int, > sl; for(int i=; i<sl.capacity(); i++)
{
sl.insert(,i); //每次都在线性表的头部进行插入
} for(int i=; i<sl.length(); i++)
{
cout << sl[i] << endl;
} sl[] = ; return ;
}
这个地方抛出了一个异常,因为我们在重载数组操作符时,已经指定了当越界时,就抛出IndexOutOfBoundsException这个类的异常信息。从这个地方,就可以看出抛出异常的好处了,当程序崩溃时,可以让我们快速的定位,如果不在重载数组操作符那个函数中抛出异常,我们将很难定位这种程序崩溃问题。
StaticList的更多相关文章
- 第十七课 StaticList和DynamicList实现
本节我们要实现StaticList和DynamicList,如下: StaticList的设计要点: StaticList是一个类模板,使用原生数组作为顺序存储空间,使用模板参数决定数组大小 在Sta ...
- 四、StaticList 和 DynamicList
1.StaticList类模板 StaticList的设计要点:类模板 使用原生数组作为顺序存储空间 使用模板参数决定数组大小 template <typename T, int N> c ...
- 快速解析超大XML不占用太大内存
import xml.etree.ElementTree as ET def parse_res(xml_file): res_dic = {} tmp_lst_lev1 = [] tmp_lst_l ...
- Luci中cbi控件类型总结
转自:http://blog.chinaunix.net/uid-28413840-id-4654479. 名称 描述 继承自 模板 NamedSection A fixed configuratio ...
- FileReader读取文件里文乱码问题
有一个UTF-8编码的文本文件,用FileReader读取到一个字符串,然后转换字符集:str=newString(str.getBytes(),"UTF-8");结果大部分中文显 ...
- How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On(RHEL Pacemaker中配置STONITH)
本文主要简单介绍一下如何在RHEL 7 Pacemaker中配置一个fence_vmware_soap类型的STONITH设备(仅供测试学习). STONITH是Shoot-The-Other-Nod ...
- 数据结构C语言版--静态顺序表的基本功能实现(一)
/* * 功能:创建一个线性表,并输出 * 静态分配内存 */ #include<stdio.h> //stdio.h是C的标准I/O库 //#include<iostream> ...
- C数据结构 : 线性表 与 链表
一.线性表 一般表现为数组,使用一组地址连续的存储单元依次存储数据元素,如图: 它具有如下特点: 长度固定,必须在分配内存之前确定数组的长度. 存储空间连续,即允许元素的随机访问. 存储密度大,内存中 ...
- How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On——RHEL Pacemaker中配置STONITH
本文主要简单介绍一下如何在RHEL 7 Pacemaker中配置一个fence_vmware_soap类型的STONITH设备(仅供测试学习). STONITH是Shoot-The-Other-Nod ...
随机推荐
- ARTS-S CentOS 7 ssh相关
修改默认端口 vi /etc/ssh/sshd_config 把Port的注释删除了改成自己想要的值 重启service sshd restart 或者sudo /etc/init.d/ssh res ...
- protobuf-rpm
############################################################## # http://www.rpm.org/max-rpm/ch-rpm-i ...
- Docker--Docker初体验
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 先来接 ...
- Power Platform之Power Automate新增RPA功能
什么是RPA RPA( Robotic Process Automation 机器人流程自动化软件),是一种新型的人工智能的虚拟流程自动化机器人.RPA的核心是通过自动化.智能化技术来“替代人”进 ...
- 在 ASP.NET Core 中使用 Serilog 进行日志记录
目录 从 NuGet 安装 Serilog 在 Main函数 中配置 Serilog 在项目中使用 Serilog 进行日志输出 从 NuGet 安装 Serilog 核心的包是 Serilog 和 ...
- gulp遇到错误:The following tasks did not complete: default Did you forget to signal async completion?
运行之后会像下面一样报这个错误,因为事按着一个视频来写的,所以 原本的gulpfile.js如下 const gulp = require('gulp') gulp.task('default',() ...
- 2016/09/21 context.getConfiguration().get()
查看api:http://hadoop.apache.org/docs/stable/api/ public String get(String name) Get the value of the ...
- 常见问题解决办法=》.net后台
1:后台返回前端长度过大的问题 除了在web.config中设置最大值外还可以修改返回值 [web.config中配置最大值有时候无效,直接修改返回值效果会好一些] List<User> ...
- Spire.Cloud 在线编辑
简介 Spire.Cloud在线编辑器是一款基于网页的 Office 文件编辑工具,支持在网页中打开.编辑.打印 Word.Excel.PPT 文件,支持将文档保存到私有云盘.支持 IE.Chrome ...
- Vue学习笔记Day1
1.vue初时 vue安装三种方式: 1:CDN引入 以下推荐国外比较稳定的两个 CDN,国内还没发现哪一家比较好,目前还是建议下载到本地. Staticfile CDN(国内) : https:// ...