可自增内存的数组
#include <iostream>
using namespace std;
class poi
{
public:
int x;
int y;
poi()
{
}
poi(int xx,int yy)
{
x=xx;
y=yy;
}
void display()
{
cout<<"x "<<x<<" y "<<y<<endl;
}
~poi()
{
}
};
template <typename T>class Array
{
public:
unsigned int sz;/***数组元素个数 ***/
unsigned int capacity;/***Array占用空间 ***/
T * array;
Array()
{
sz = 0;
capacity = 2;
point=new T[capacity];
}
~Array()
}
void push(T obj)
{
if(sz==capacity) /***空间已满 ***/
{
T *old ;
old=array;
array = new T[capacity * 2];
memcpy(array, old, capacity * sizeof(T));
capacity = capacity*2;
}
array[sz] = obj;
sz++;
{
return sz;
}
};
int main()
{
Array<poi> arr;
for (int i=0;i<100;i++)
{
poi po(i,i*2);
arr.push(po);
}
for (int i=0;i<arr.size();i++)
{
arr[i].display();//或者arr.array[i].display();
}
return 0;
}
using namespace std;
class poi
{
public:
int x;
int y;
poi()
{
}
poi(int xx,int yy)
{
x=xx;
y=yy;
}
void display()
{
cout<<"x "<<x<<" y "<<y<<endl;
}
~poi()
{
}
};
template <typename T>class Array
{
public:
unsigned int sz;/***数组元素个数 ***/
unsigned int capacity;/***Array占用空间 ***/
T * array;
Array()
{
sz = 0;
capacity = 2;
point=new T[capacity];
}
~Array()
{
/***这里为释放[]型***/
delete [] array; //而不是delete point;}
void push(T obj)
{
if(sz==capacity) /***空间已满 ***/
{
T *old ;
old=array;
array = new T[capacity * 2];
memcpy(array, old, capacity * sizeof(T));
/****下句注释掉**/
//delete old;capacity = capacity*2;
}
array[sz] = obj;
sz++;
}
/****[]的两个重载版本**/
T & operator [](unsigned int index)
{
return point[index];
}
const T & operator [](unsigned int index) const
{
return point[index];
}
{
return sz;
}
};
int main()
{
Array<poi> arr;
for (int i=0;i<100;i++)
{
poi po(i,i*2);
arr.push(po);
}
for (int i=0;i<arr.size();i++)
{
arr[i].display();//或者arr.array[i].display();
}
return 0;
}