vector 简单底层实现

来源:互联网 发布:sql注入入侵网站 编辑:程序博客网 时间:2024/06/04 01:14


代码:

#include <iostream>#include <cstring>#include <cstdio>using namespace std;template <typename T>class Vector{private :    T* data; /// 动态数组 指针指向一个内存空间    int len; /// 当前存在元素个数    int sz;  /// 当前动态数组的大小public :    Vector(){        len=0;        sz=1;        data=new T[1]; /// 分配一个内存空间    } /// 构造 初始化    void clear(){        len=0;        sz=1;        delete[] data;        data=new T[1];    }    int size(){        return len;    }    T& operator [] (const int index){        if(index>=len) {            cout<<"Error!"<<endl;        }        return data[index];    } /// 重写 [] ,返回询问的下标的val    void push_back(const T a){        if(len>=sz){ /// 当前动态数组存不下了,再开两倍的空间            sz=sz*2+1;            T* newdata=new T[sz];            memcpy(newdata,data,sizeof(data));            /// 将之前的数据复制进来            delete[] data;            data=newdata;        }        data[len++]=a;    } /// 插入一个值protected :};struct node{    int v,id;    node(int v=0,int id=0):v(v),id(id){}};int main(){    Vector<node> V;    V.push_back(node(1,1));    V.push_back(node(2,2));    V.push_back(node(3,3));    V[0]=node(1,4);    for(int i=0;i<V.size();i++)      cout<<V[i].v<<" "<<V[i].id<<endl;    return 0;}


0 0
原创粉丝点击