📄 myarray.h
字号:
#include "stdafx.h"
#include <iostream>
using namespace std;
template <class type>
class Array{
private:
type *arrayelems;
int size;
public:
Array(int sz=50);
Array(const Array <type> &x);
~Array(){delete []arrayelems;};
Array<type> &operator = (const Array <type> &arr);
type &operator [](int n);
int Length(){return size;}
void resize(int sz);
};
template <class type>
Array<type>::Array(int sz = 50):arrayelems(NULL),size(sz){
arrayelems=new type[sz];
if(arrayelems==NULL)
{
cerr<<"分配失败"<<endl;
exit(1);
}
}
template <class type>
Array<type>::Array(const Array<type> &x){
delete []arrayelems;
size=x.size;
arrayelems=new type[size];
if(arrayelems==NULL)
{
cerr<<"分配失败"<<endl;
size=0;
exit(1);
}
memcpy(arrayelems,x.arrayelems,size);
}
template <class type>
Array<type> &Array<type>::operator =(const Array<type> &arr)
{
if(arrayelems==arr.arrayelems)
return *this;//self-assignment
delete []arrayelems;
size=arr.size;
arrayelems=new type[size];
if(arrayelems==NULL)
{
cerr<<"分配失败"<<endl;
size=0;
exit(1);
}
/*memcpy(arrayelems,arr.arrayelems,size);
return *this;*/
type * p1=arrayelems;
type * p2=arr.arrayelems;
int n=size;
while(n--) *p1++=*p2++;
return *this;
}
template <class type>
type & Array<type>::operator [](int n)
{
if(n>size-1||n<0)
{
cerr<<"越界"<<endl;
exit(1);
}
return arrayelems[n];
}
template <class type>
void Array<type>::resize(int sz)
{
type * p1;
type * p2;
if(sz<=0)
{
cerr<<"数组长度非法"<<endl;
exit(1);
}
if(sz!=size)
{
type *newarr=new type[sz];
if(newarr==NULL)
{
cerr<<"分配失败"<<endl;
exit(1);
}
if(sz>=size)
{
//memcpy(newarr,arrayelems,size);
p1=arrayelems;
p2=newarr;
int n=size;
while(n--) *p2++=*p1++;
}
else
{
//memcpy(newarr,arrayelems,sz);
p1=arrayelems;
p2=newarr;
int n=sz;
while(n--) *p2++=*p1++;
}
delete []arrayelems;
arrayelems=NULL;
arrayelems=new type[sz];
size=sz;
if(arrayelems==NULL)
{
cerr<<"分配失败"<<endl;
exit(1);
}
//memecpy(arrayelems,newarr,size);
p1=arrayelems;
p2=newarr;
int n=sz;
while(n--) *p1++=*p2++;
delete []newarr;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -