DynamicList
DynamicList设计要点
——类模板
申请连续空间作为顺序存储空间
动态设置顺序存储空间的大小
保证重置顺序存储空间时的异常安全性
DynamicList设计要点
——函数异常安全的概念
不泄露任何资源
不允许破坏数据
——函数异常安全的基本保证
如果异常被抛出
对象内的任何成员仍然能保持有效状态
没有数据的破坏及资源泄露
DynamicList设计要点
- template <typename T>
- class DynamicList : public SeqList<T>
- {
- protected:
- int m_capacity; //顺序存储空间的大小
- public:
- DynamicList(int capacity); //申请空间
- int capacity() const;
- /*重新设置顺序存储空间的大小*/
- void resize(int capacity);
- ~DynamicList(); //归还空间
- };
DynamicList.h
- #ifndef DYNAMICLIST_H
- #define DYNAMICLIST_H
- #include "Seqlist.h"
- #include "Exception.h"
- namespace DTLib
- {
- template <typename T>
- class DynamicList : public SeqList<T>
- {
- protected:
- int m_capacity; //顺序存储空间的大小
- public:
- DynamicList(int capacity) //申请空间
- {
- this->m_array = new T[capacity];
- if(this->m_array != NULL)
- {
- this->m_length = ;
- this->m_capacity = capacity;
- }
- else
- {
- THROW_EXCEPTION(NoEnoughMemoryException,"No memory to create Dynamiclist object...");
- }
- }
- int capacity() const
- {
- return m_capacity;
- }
- /*重新设置顺序存储空间的大小*/
- void resize(int capacity)
- {
- if(m_capacity != capacity)
- {
- T* array = new T[capacity];
- if(array != NULL)
- {
- int length = (this->m_length < capacity ? this->m_length : capacity);
- for(int i=; i<length; i++)
- {
- array[i] = this->m_array[i];
- }
- T* temp = this->m_array;
- this->m_array = array;
- this->m_length = length;
- this->m_capacity = capacity;
- delete[] temp;
- }
- else
- {
- THROW_EXCEPTION(NoEnoughMemoryException,"No memory to resize Dynamiclist object...");
- }
- }
- }
- ~DynamicList() //归还空间
- {
- delete[] this->m_array;
- }
- };
- }
- #endif // DYNAMICLIST_H
main.cpp
- #include <iostream>
- #include "Dynamiclist.h"
- using namespace std;
- using namespace DTLib;
- int main()
- {
- DynamicList<int> sl();
- for(int i=; i<sl.capacity(); i++)
- {
- sl.insert(,i); //每次都在线性表的头部进行插入
- }
- for(int i=; i<sl.length(); i++)
- {
- cout << sl[i] << endl;
- }
- cout << endl;
- sl.resize();
- sl.insert(,);
- for(int i=; i<sl.length(); i++)
- {
- cout << sl[i] << endl;
- }
- return ;
- }
DynamicList的更多相关文章
- 第十七课 StaticList和DynamicList实现
本节我们要实现StaticList和DynamicList,如下: StaticList的设计要点: StaticList是一个类模板,使用原生数组作为顺序存储空间,使用模板参数决定数组大小 在Sta ...
- 四、StaticList 和 DynamicList
1.StaticList类模板 StaticList的设计要点:类模板 使用原生数组作为顺序存储空间 使用模板参数决定数组大小 template <typename T, int N> c ...
- 极路由2(极贰)在OpenWrt下定制自己的ss服务
默认刷入的OpenWrt带的ss, 只有ss-redir服务, 但是在实际使用中, 很多时候还是希望访问直接通过正常网关, 只有少部分访问需要通过ss, 所以希望能配置成为ss-local服务. 在保 ...
- AutoMapper 最佳实践
AutoMapper 是一个基于命名约定的对象->对象映射工具. 只要2个对象的属性具有相同名字(或者符合它规定的命名约定),AutoMapper就可以替我们自动在2个对象间进行属性值的映射.如 ...
- vue+node开发手机端h5页面开发遇到的坑
项目进行中...随时更新 这里记录了一些手机端调试的方式 一 css 1.文字超过span宽度显示...(单行文字) .topWrap .introduce span { padding: 0 17p ...
- 如何用easyui+JAVA 实现动态拼凑datagrid表格(续)
前面一段时间写了一篇文章: 如何用easyui+JAVA 实现动态拼凑datagrid表格 这篇文章的话,效果是可以实现,但是经过我反复试验,还是存在一些问题的. 今天这篇文章就是向大家介绍下如何避免 ...
- 如何用easyui+JAVA 实现动态拼凑datagrid表格
先给大家看一看效果,最近一段时间都在研究这个东西. 如果我把日期间隔选宽呢?比如5月日到5月5日?下面给大家看看效果,不用担心哦 看到了吧,哈哈,这个日期都是动态生成的,下面就来跟大家分享一下这个的实 ...
- dataGrid查询表格
waf("#Gird").dataGrid("reloadGrid") //重新发请求去装载数据 waf("#Grid").wafGrid( ...
- Luci中cbi控件类型总结
转自:http://blog.chinaunix.net/uid-28413840-id-4654479. 名称 描述 继承自 模板 NamedSection A fixed configuratio ...
随机推荐
- 小胖求学系列之-文档生成利器(下)-smart-doc
叮叮叮....一阵铃声响起,大家都陆续来到了课堂,看老师没来,小张和小胖又闲聊起来,小张问:怎么样,smart-doc好用吧.小胖笑着说:挺好用的,不过? 小张看卖关子,问到:不过什么,有什么新发现? ...
- 【ActiveMQ】使用学习
[ActiveMQ]使用学习 转载: 1.启动 activemq start 2.停止 activemq stop http://localhost:8161 admin / admin Queue ...
- Python3之Django的Cookie与Session的使用
一.Cookie的使用 1.设置Cookie url.set_cookie("tile","zhanggen",expires=value,path='/' ) ...
- 简单学习【1】——使用webpack
使用webpack webpack命令 webpack配置 第三方脚手架 1.webpack命令 webpack - h (webpack 所有的选项) webpack -v (查看webpack的版 ...
- LeetCode刷题总结-树篇(中)
本篇接着<LeetCode刷题总结-树篇(上)>,讲解有关树的类型相关考点的习题,本期共收录17道题,1道简单题,10道中等题,6道困难题. 在LeetCode题库中,考察到的不同种类的树 ...
- 服务器端Mysql常用操作
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/f7463513-5 ...
- Winform中实现拖拽文件到ListView获取文件类型(附代码下载)
场景 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建一个for ...
- HA: Infinity Stones Vulnhub Walkthrough
下载地址: https://www.vulnhub.com/entry/ha-infinity-stones,366/ 主机扫描: 目录枚举 我们按照密码规则生成字典:gam,%%@@2012 cru ...
- IoT缺德相关
https://github.com/nebgnahz/awesome-iot-hacks <揭秘家用路由器0day漏洞挖掘技术> Embedded Device Security: Pw ...
- Mysql 主从复制搭建-极简版
前言 自己在百度.Google一番踩坑搭建成功后,记录一下,也希望后来人不再被这些坑到. 这里为了方便使用 docker,不会的同学请移步相关 Docker 教程. 正文 1. 启动 mysql #启 ...