#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<limits>
#include<cstring>
using namespace std;
template <class T>
class myVector
{
private:
T* data;
int len;
int size;
public:
myVector()
{
data = NULL;
len = size = 0;
}
myVector(int _len)
{
data = new T[_len];
len = _len;
size = 0;
}
myVector(const myVector& tmp)
{
if(this == &tmp)
return;
//delete []data;
data = new T[tmp.len];
for(int i=0; i<tmp.size; ++i)
data[i] = tmp.data[i];
len = tmp.len;
size = tmp.size;
}
T& operator[](int index)
{
return data[index];
}
const myVector& push_back(const T tmp)
{
if(size >= len)
{
T* newData = new T[len*2 + 1];
memcpy(newData, data, len*sizeof(T));
delete []data;
data = newData;
len = 2*len + 1;
}
data[size++] = tmp;
printALL();
return *this;
}
int getSize()
{
return size;
}
void printALL()
{
cout<<len<<":"<<size<<endl;
for(int i=0; i<size; ++i)
cout<<data[i].f<<" ";
cout<<endl;
cout<<"********************"<<endl;
}
};
struct A{
int f;
public:
A(int r):f(r){}
A()
{
f =1;
}
};
int main()
{
myVector<A> v;
v.push_back(A(2));
v.push_back(A(3));
v.push_back(A(4));
v.push_back(A(5));
v.push_back(A(6));
//node* head = buildTree();
//cout<<i<<"q";
//system("pause");
return 0;
}
c++面试题-vector手写实现版本
最新推荐文章于 2025-03-09 12:00:41 发布