test.h
#ifndef TEST_H
#define TEST_H
template<typename T>class Array
{
private:
T* parray; //定义动态数组
int room; //存储空间大小的值
public:
Array()
:room (0)
,parray (NULL)
{
parray=(int*)malloc(sizeof(int)*room);
}
~Array()
{
if(parray!=NULL)
free(parray);
}
int push_back(T m) //推入一个数组元素
{
room++;
parray=(T*)realloc(parray,sizeof(T)*room);
*(parray+room-1)=m;
return *(parray+room-1);
}
int sizeof_Array() //得到数组大小
{
return room;
}
bool remove(int k) //删除第k个元素
{
printf("删除元素%d后 ",k);
if(k>room-1 || k<0)
{
return false;
}
else
{
memmove(parray+k,parray+k+1,sizeof(T)*(room-1-k));
room-=1;
return true;
}
}
bool insert(int k,T element) //插入一个元素
{
printf("插入元素%d后 ",k);
if(k>room || k<0)
{
return false;
}
else
{
room++;
parray=(T*)realloc(parray,sizeof(T)*room);
memmove(parray+k+1,parray+k,sizeof(T)*(room-1-k));
*(parray+k)=element;
}
}
T query(int k) //查询第k个元素的值
{
if(k>room-1 || k<0)
{
return -1;
}
else
{
return *(parray+k);
}
}
void display() //显示数组内元素个数
{
for(int i=0;i<room;i++)
cout<<query(i)<<endl;
cout<<"数组内元素个数"<<sizeof_Array()<<endl;
}
T* begin()
{
return parray;
}
T* end()
{
return parray + room;
}
};
#endif
#define TEST_H
template<typename T>class Array
{
private:
T* parray; //定义动态数组
int room; //存储空间大小的值
public:
Array()
:room (0)
,parray (NULL)
{
parray=(int*)malloc(sizeof(int)*room);
}
~Array()
{
if(parray!=NULL)
free(parray);
}
int push_back(T m) //推入一个数组元素
{
room++;
parray=(T*)realloc(parray,sizeof(T)*room);
*(parray+room-1)=m;
return *(parray+room-1);
}
int sizeof_Array() //得到数组大小
{
return room;
}
bool remove(int k) //删除第k个元素
{
printf("删除元素%d后 ",k);
if(k>room-1 || k<0)
{
return false;
}
else
{
memmove(parray+k,parray+k+1,sizeof(T)*(room-1-k));
room-=1;
return true;
}
}
bool insert(int k,T element) //插入一个元素
{
printf("插入元素%d后 ",k);
if(k>room || k<0)
{
return false;
}
else
{
room++;
parray=(T*)realloc(parray,sizeof(T)*room);
memmove(parray+k+1,parray+k,sizeof(T)*(room-1-k));
*(parray+k)=element;
}
}
T query(int k) //查询第k个元素的值
{
if(k>room-1 || k<0)
{
return -1;
}
else
{
return *(parray+k);
}
}
void display() //显示数组内元素个数
{
for(int i=0;i<room;i++)
cout<<query(i)<<endl;
cout<<"数组内元素个数"<<sizeof_Array()<<endl;
}
T* begin()
{
return parray;
}
T* end()
{
return parray + room;
}
};
#endif
test.cpp
#include<iostream>
#include"test.h"
using namespace std;
void main()
{
Array<int> intArray;
intArray.push_back(1);
intArray.push_back(2);
intArray.push_back(3);
intArray.push_back(4);
intArray.push_back(5);
intArray.push_back(6);
intArray.push_back(7);
intArray.push_back(8);
intArray.push_back(9);
/*intArray.display();
intArray.remove(3);
intArray.display();
cout<<intArray.begin()<<endl;
cout<<intArray.end()<<endl;
int* ite=NULL;
for(ite=intArray.begin();ite!=intArray.end();ite++)
{
printf("%d ",*ite);
}
for(ite=intArray.end();ite!=intArray.begin();ite--)
{
printf("%d ",*ite);
}*/
}
#include"test.h"
using namespace std;
void main()
{
Array<int> intArray;
intArray.push_back(1);
intArray.push_back(2);
intArray.push_back(3);
intArray.push_back(4);
intArray.push_back(5);
intArray.push_back(6);
intArray.push_back(7);
intArray.push_back(8);
intArray.push_back(9);
/*intArray.display();
intArray.remove(3);
intArray.display();
cout<<intArray.begin()<<endl;
cout<<intArray.end()<<endl;
int* ite=NULL;
for(ite=intArray.begin();ite!=intArray.end();ite++)
{
printf("%d ",*ite);
}
for(ite=intArray.end();ite!=intArray.begin();ite--)
{
printf("%d ",*ite);
}*/
}
0 件のコメント:
コメントを投稿