/Array.h/
#ifndef AVALON_ARRAY_H
#define AVALON_ARRAY_H
#include <iostream>
#include <cassert>
namespace AVALON_ARRAY
{
const int DefaultArraySize =12;//默认的长度
template<class T>
class Array
{
public://构造释构函数
explicit Array(int size = DefaultArraySize){init(size,0);}
Array(const T * array,int array_size){init(array_size,array);}
Array(const Array & rhs ){init(rhs._size,rhs.ia);}
virtual ~Array(void){delete [] ia;}
public:
//相等与不相等操作
bool operator==(const Array & )const;
bool operator!=(const Array & )const;
//赋值操作符
Array<T> & operator =(const Array & );
//下标操作符(没有索引检查功能的)
virtual T & operator[]( const int index ){return ia[index];}
// virtual void sort();
//在类对象中找到最小,大值
// virtual T min()const;
// virtual T max()const;
//如值在数组中找到返回第一次出现的索引,否则返回-1
// virtual int find(const T & value)const;
//数组的长度
int size()const{return _size;}
protected:
// static const int DefaultArraySize ;//默认的长度
//用做构造函数的共享代码
void init(int sz,const T * array);//OK
//
int _size;//数组的长度
T * ia ;
};
//
template<class T>
inline void Array<T>::init(int sz,const T * array)
{
_size =sz;
ia =new T [_size];
if( NULL==array)
{
for(int ix=0;ix<_size;++ix)//初始化数组
ia[ix] = T(0);
return ;
}
for(int ix=0;ix<_size;++ix)
ia[ix] = array[ix];
}
}//NAMESPACE END
/
#endif