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赋值给size2
- if(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
::my_begin() - {
- type *ptr=arr;
- return ptr;
- }
-
- //返回末尾下一个位置的迭代器
- template <typename type>
- type* myvector
::my_end() - {
- type *ptr1=(arr+size2-1);
- return ptr1;
- }
-
- //指定位置的插入
- template <typename type>
- type *myvector
::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;
- else
- return 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、思维导图