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;
 
}

时间: 2024-10-03 03:21:40

homework 15 2016 6 2 模板的相关文章

Test on 11/15/2016

@kaike 1.还是字符串   (string.pas/c/cpp) [问题描述] 给定一个长度为n的字符串,其中只包含小写字母a,b 你要将一些b改成a,使其中的任意连续k个字符至少包含q个a 你要计算出最小修改次数. [输入] 第一行三个正整数n,k,q 第二行一个长度为n的字符串. [输出] 一行一个正整数,表示最少改变的数量. [输入输出样例1] string.in string.out 10 6 5 ababbaabbb 4 [数据范围] 数据范围: 30% n,k,q<=500 4

记录一份最简洁只有15行代码的模板引擎!

1 var TemplateEngine = function(html, options) { 2 var re = /<%([^%>]+)?%>/g, reExp = /(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g, code = 'var r=[];\n', cursor = 0; 3 var add = function(line, js) { 4 js? (code += line.match(reExp) ? line +

2016.7.14模板的设计

模板的设计: 在定义一个功能的时候,该功能的确定的部分放在父类中,而不确定的部分,单独放在子类中. abstract class Dmeo{ public  final void getTime(){  long start=System.currentTimeMillis();  function();  long stop=System.currentTimeMillis();  System.out.print("共花费了"+(stop-start)); } public abs

stand up meeting 1/15/2016 &amp;&amp; work of weekend 1/16/2016~1/17/2016

part 组员                工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云  组内对生词卡片又重新进行了讨论:准备最后的发布和整个开发的整理总结   6 查漏补缺,扫除UI bug;用户体验相关    6 foxit PDF Reader 朱玉影       login 周以舟         sync 林建平         foxit PDF Reader 张葳        

Bank homework 10 2016 4 25

#include<iostream>#include<string>using namespace std;class Bank { public: Bank(string _name) { name = _name; } string getName() const { return name; } virtual void printMessage() const = 0; virtual void deposit(double m) = 0; virtual void wit

homework 11 2016 5 13 读入文件做输入

#include <iostream>#include <fstream> using namespace std; int main(){ string x, y, z; cin >> x >> y >> z;  ifstream file1(x.c_str()); ifstream file2(y.c_str()); ofstream file3(z.c_str());  string a, b; getline(file1,a); getl

2016 10月15日java的动手动脑

(1) 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. 源程序: //随机数的产生 //zhanxinwu,October,15,2016 public class Recur { private static final int N = 10; private static final int LEFT = 40; private static final int RIGHT = 100; private static long x0 = 1L; private long

C#开发微信门户及应用(27)-公众号模板消息管理

通过模板消息接口,公众号能向关注其账号的用户发送预设模板的消息.模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息.本文主要介绍基于C#开发实现公众号模板消息的管理功能. “模板消息功能的推出,将极大地增强服务号的服务通知能力”,在一些一直期待微信模板消息功能开放的公众号运营者看来,微信一对一沟通的社交属性,让信息推送的触达率更加精准,这也让企业在成本.服务效率.性能上有了

java模式:模板模式的简单理解

1.模板模式就是用虚类作为基类将几个要执行差不多操作中相同的部分提取出来,不同的部分各自实现! 2.下面给出简单栗子: 我要进行的操作是将大象和狐狸放入冰箱,放入大象和狐狸有相同的步骤:开冰箱和关冰箱,这个操作在基类中实现就好,而不同的在于具体操作部分: 一,大象太胖了,要测量并切片才能放入冰箱 二,狐狸太臭了,要洗干净并擦干 所以程序如下: 1.基类:BasicFridgeOperation.java package com.learn.templateMode; /** * Created