c++面试题-vector手写实现版本

来源:互联网 发布:数据库账号管理办法 编辑:程序博客网 时间:2024/05/22 07:00
#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;}

原创粉丝点击