仿照vector手动实现自己的myVector,最主要实现二倍扩容功能
有些功能,不会
- #include <iostream>
-
- using namespace std;
- //创建vector类
- class Vector
- {
- private:
- int *data;
- int size;
- int capacity;
- public:
- //无参构造
- Vector(){}
- //拷贝构造
- Vector(const Vector &other):size(0),capacity(0)
- {
- data=new int[other.capacity];
- for(int i=0;i<size;i++)
- {
- data[i]=other.data[i];
- }
- }
- ~Vector()
- {
- delete []data;
- }
- //返回第一个位置的元素
- int front()
- {
- return data[0];
- }
- //返回最后一个位置的元素
- int back()
- {
- return data[size-1];
- }
- //返回 最末位置的迭代器
- int *end()
- {
- return &data[size];
- }
-
- //返回第一个位置的迭代器
- int *begin()
- {
- return &data[0];
- }
-
- //添加元素
- void push_back(int e)
- {
- if(size==capacity)
- {
- cout<<"已经到容器最大值"<<endl;
- if(capacity==0)
- {capacity=1;}
- }
- else
- {
- capacity=capacity*2;
- }
- int *newdata=new int[capacity];
- for(int i=0;i<size;i++)
- {
- newdata[i]=data[i];
- }
- delete[] data;
- data=newdata;
-
- data[size]=e;
- size++;
- }
- //删除末尾元素
- void pop_back()
- {
- size--;
- }
- //判空
- bool empty()
- {
- return size==0;
- }
- //获取元素数量
- int get_size()
- {
- return size;
- }
- //容器大小
- int get_capacity()
- {
- return capacity;
- }
- //遍历
- void show()
- {
- int i = 0;
- for(i=0;i < size;i++)
- {
- cout << data[i] << "\t";
- }
- cout << endl;
- }
-
- };
- int main()
- {
- Vector V1;
- V1.push_back(4);
- V1.push_back(5);
- V1.push_back(9);
- V1.push_back(3);
- V1.push_back(6);
- V1.push_back(2);
- V1.show();
- cout<<"最大容量"<<V1.get_capacity()<<endl;
- cout<<"拥有元素"<<V1.get_size()<<endl;
- V1.pop_back();
- V1.show();
- return 0;
- }
2.思维导图