homework 15 2016 6 2 模板
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
template <typename T, int capacity>
class Array
{
public:
Array();
~Array();
bool empty();
void push(T value);
T pop();
int size();
T& operator[] (int index);
private:
T* elements;
int num;
};
class ArrayException
{
public:
ArrayException(const char *msg);
const char *what() const;
private:
const char *message;
};
template <typename T, int capacity>
Array<T,capacity>::Array(){
num = 0;
elements = new T[capacity];
}
template <typename T, int capacity>
Array<T,capacity>::~Array(){
delete [] elements;
}
template <typename T, int capacity>
bool Array<T,capacity>::empty(){
if(num==0) return true;
else return false;
}
template <typename T, int capacity>
void Array<T,capacity>::push(T value){
if(num >= capacity) throw ArrayException("Array Full Exception");
else {
elements[num] = value;
num++;
}
}
template <typename T, int capacity>
T Array<T,capacity>::pop(){
if(num == 0) throw ArrayException("Array Empty Exception");
else {
T temp = elements[num-1];
elements[num-1] = 0;
num--;
return temp;
}
}
template <typename T, int capacity>
int Array<T,capacity>::size(){
return num;
}
template <typename T, int capacity>
T& Array<T,capacity>::operator[] (int index){
if(index < 0 || index >= num) throw ArrayException("Out of Range Exception");
else return elements[index];
}
ArrayException::ArrayException(const char *msg){
message=msg;
}
const char* ArrayException::what() const{
return message;
}
void test()
{
Array<int,1> intArray;
try {
intArray.push(1);
}
catch (ArrayException ex) {
cout << ex.what() << endl;
}
try {
cout << intArray[3] << endl;
}
catch (ArrayException ex) {
cout << ex.what() << endl;
}
try {
cout << intArray.pop() << endl;
}
catch (ArrayException ex) {
cout << ex.what() << endl;
}
}
int main(){
Array<int,15> a;
for (int i = 0; i <15; i++) a.push(i);
cout<<"a.size=="<<a.size()<<endl;
cout<<"a[0]=="<<a[0]<<endl;
cout<<"a[a.size()-1]=="<<a[a.size()-1]<<endl;
cout<<"a[-1]=="<<a[-1]<<endl;
cout<<"a[a.size()]=="<<a[a.size()]<<endl;
cout << endl;
return 0;
}
homework 15 2016 6 2 模板的更多相关文章
- U3D笔记11:47 2016/11/30-15:15 2016/12/19
11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...
- BarTender 2016如何导出模板为pdf文件?
最近有小伙伴来问,BarTender 2016能不能导出模板为pdf文件?这个是可以的,之前针对BarTender 10.1就介绍过一种方法了.本文,小编再针对BarTender 2016给大家讲下如 ...
- 12月15日下午Smarty模板函数
1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...
- homework 11 2016 5 13 读入文件做输入
#include <iostream>#include <fstream> using namespace std; int main(){ string x, y, z; c ...
- Bank homework 10 2016 4 25
#include<iostream>#include<string>using namespace std;class Bank { public: Bank(string _ ...
- stand up meeting 1/15/2016 && work of weekend 1/16/2016~1/17/2016
part 组员 工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 组内对生词卡片又重新进行了讨论:准备最后的发布和整个开发的整理 ...
- 在Visual Studio 2015 中添加SharePoint 2016 开发模板
前言 SharePoint 2016已经发布很久了,然而,默认安装VS2015以后,却没有SharePoint 2016的开发模板.其实问题很简单,和VS2012开发SharePoint 2013一样 ...
- 如何在ChemDraw 15.1 Pro中添加模板
ChemDraw化学绘图工具为了方便用户的使用,特地开发了众多的各种类型模板.用户在绘制一些简单或复杂的化学结构式时,可以直接从ChemDraw模板库里直接调用使用,虽然ChemDraw模板非常的丰富 ...
- 2016 10月15日java的动手动脑
(1) 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. 源程序: //随机数的产生 //zhanxinwu,October,15,2016 public class Recur ...
随机推荐
- [FFmpeg] ffmpeg参数详解
ffmpeg 参数语法 ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 如果没有输入文件,那么视音频捕捉就会起作用. ...
- Esfog_UnityShader教程_镜面反射SpecularReflection
系列教程第四篇,本来打算昨天写的,有些小偷懒就今天写了,这一期我们来讨论一下关于镜面反射的基本原理和具体代码.这一篇是承接着上一篇<Esfog_UnityShader教程_漫反射DiffuseR ...
- strong & weak
Here is a quick summary: A strong reference will keep the object it points to from being deallocated ...
- host DNS 访问规则
昨天站点一直出现302循环重定向问题,捣鼓了半天才解决,原来是hosts和dns配置问题. 注:当你的站点出现循环重定向时,首先应该关注的hosts以及dns配置,确保无误. 下面记录下相关知识点: ...
- 3,SFDC 管理员篇 - 区域划分
1,销售区域划分 Setup | Administrator | Manage Territory Territory Type : 帮助用户建立大的销售区域分类,分类顺序按照Priority进行显示 ...
- mongodb转换List实体(去掉多余的字段) 批量添加
Gson gson = new Gson(); String str = "list集合json字符串"; JsonObject object = gson.fromJson(st ...
- Flask——route
Flask——route 关于路由flask中有三种方法(例子)处理: flask.Flask.route 装饰器(关于装饰器可以参考该文),这时最常见的使用方法,在装饰器的参数中加入想要的路由即可, ...
- zedboard如何从PL端控制DDR读写(六)
上一节说到了DDR寻址的问题,如下图: 从官方文档上我们看到了DDR的地址是从0008_0000开始的,那么我们开始修改Xilinx给我们提供的IP核代码.其实很简单,上一节已经分析了地址停留在000 ...
- dispay属性的block,inline,inline-block
转自下面的几位大神: http://www.cnblogs.com/KeithWang/p/3139517.html 总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 bl ...
- skiplist
§1 Skip List 介绍 Skip List是一种随机化的数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间).基本上, 跳跃列表是对有序的链表增加上 ...