64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
template<class T>
class myvector
{
public:
myvector():size(0),capa(0)
{
arrs=0;
}
~myvector()
{
delete []arrs;
}
void plus_back(T obj)
{
cout<<"形参"<<&obj<<endl;
if(size==capa)//如果满了
{
if(size==0)
capa=1;
else
capa*=2;
changesize();
}
arrs[size++]=obj;
}
void pop_back()
{
cout<<"删除"<<endl;
if(size)//如果不为0
{
--size;//删除
if(!size)//如果为0
{
capa=0;
delete []arrs;
arrs=0;//空引用
}
else if(size==capa/2)
{
capa/=2;
changesize();
}
}
}
void display()
{
for (int i=0;i!=size;++i)
{
cout<<arrs[i]<<endl;
}
}
private:
T *arrs;
int size;//leng
int capa;//size
void changesize()//改变大小
{
T *temparr=new T[capa];
for (int i=0;i!=size;i++)
{
temparr[i]=arrs[i];
}
delete []arrs;
arrs=temparr;
}
};
class User
{
public:
User(int i=5):id(i)
{
cout<<"user :"<<this<<"初始化"<<endl;
}
~User()
{
cout<<"user :"<<this<<"销毁了"<<endl;
}
private:
int id;
friend ostream& operator<<(ostream& os,const User& us)
{
os<<"打印: userID: "<<&us;
return os;
}
};
int main()
{
myvector<User> vec;
vec.plus_back(User());
vec.plus_back(User());
vec.display();
vec.pop_back();
//vec.plus_back(User());
vec.display();
}