myVector
#include <iostream>
#include <vector>int size2=0;using namespace std;template <typename type>
class myvector
{int size;type value;type *arr;public://无参构造myvector(){};//有参构造myvector(int s,type v):size(s),value(v){arr=new int[size];for(int i=0;i<size;i++){arr[i]=value;}}//拷贝构造myvector(const myvector&other):size(other.size),value(other.value){memcpy(this->arr,other.arr,size);}//析构函数~myvector(){delete [] arr;arr=nullptr;}//求容器的大小type my_capacity();//添加元素void my_push(const type & value);//展示元素void show();//求容器的真实大小type my_size();//访问容器中的元素type my_at(type local);//给容器中的元素赋值void my_assign(int size,const type &value);//返回起始位置的引用type my_front();//返回最后一个位置的引用type my_back();//返回起始元素的迭代器type *my_begin();//返回末尾下一个位置的迭代器type *my_end();//指定位置的插入type *my_insert(type local,const type &value);//清空容器中的元素void my_clear();//判空函数bool my_empty();};//求容器的大小
template <typename type>
type myvector<type>::my_capacity()
{return size;
}//添加元素
template <typename type>
void myvector<type>::my_push(const type & value)
{//将初始化的size赋值给size2if(size2==0){size2=size;}if(size2>=size){size2=size;size=size*2; //二倍扩容}if(size2<=size){size2++;}arr[size2-1]=value;cout<<"添加成功"<<endl;
}//展示元素
template <typename type>
void myvector<type>::show()
{for(int i=0;i<size2;i++){cout<<arr[i]<<"\t";}cout<<endl;
}//求容器的真实大小
template <typename type>
type myvector<type>::my_size()
{int size3=size2;return size3;
}//访问容器中的元素
template <typename type>
type myvector<type>::my_at(type local)
{return arr[local];
}//给容器中的元素赋值
template <typename type>
void myvector<type>::my_assign(int num,const type &value)
{for(int i=num-1;i>=0;i--){arr[i]=value;}
}//返回起始位置的引用
template <typename type>
type myvector<type>::my_front()
{return arr[0];
}//返回最后一个位置的引用
template <typename type>
type myvector<type>::my_back()
{return arr[size2-1];
}//返回起始元素的迭代器
template <typename type>
type* myvector<type>::my_begin()
{type *ptr=arr;return ptr;
}//返回末尾下一个位置的迭代器
template <typename type>
type* myvector<type>::my_end()
{type *ptr1=(arr+size2-1);return ptr1;
}//指定位置的插入
template <typename type>
type *myvector<type>::my_insert(type local,const type &value)
{size2++;for(int i=size-1;i>=local;i--){arr[i+1]=arr[i];}//插入type *ptr2=(arr+local);*ptr2=value;return ptr2;
}//清空容器中的元素
template <typename type>
void myvector<type>::my_clear()
{size2=0;cout<<"清空成功"<<endl;
}//判空函数
template <typename type>
bool myvector<type>::my_empty()
{if(size2==0)return 1;elsereturn 0;
}int main()
{//初始化myvector<int> V1(5,7);//容器大小cout<<"容器大小为:"<<V1.my_capacity()<<endl;//添加元素V1.my_push(8);V1.my_push(8);V1.my_push(8);//展示元素V1.show();//真实大小cout<<"真实大小:"<<V1.my_size()<<endl;//访问容器中的元素cout<<V1.my_at(4)<<endl;//给容器中的元素赋值V1.my_assign(5,9);V1.show();//返回起始位置的引用cout<<"起始元素为:"<<V1.my_front()<<endl;//返回最后一个位置的引用cout<<"最后位置元素为:"<<V1.my_back()<<endl;;//返回起始元素的迭代器int *p;p=V1.my_begin();cout<<"起始元素为:"<<*p<<endl;//返回末尾下一个位置的迭代器int *p1;p1=V1.my_end();cout<<"最后位置元素为:"<<*p1<<endl;//指定位置的插入V1.my_insert(2,3);V1.show();//判空cout<<V1.my_empty()<<endl;;return 0;
}
2、思维导图