9.14号作业

仿照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.思维导图

相关推荐
努力实干3 小时前
面向对象设计原则——C++
开发语言·c++·数码相机
syagain_zsx6 小时前
jsoncpp 使用指南:编译链接、Json::Value 取值与高频坑
c++·json·库·http格式
布莱克6056 小时前
理解 = delete 与 = default:两种赋值语义的差异
c++
小小、码农7 小时前
[特殊字符]【C++11】类的新功能全面解析:移动构造、移动赋值、default、delete、final 与 override
linux·开发语言·网络·c++
库玛西8 小时前
外部排序全解析:败者树、置换-选择排序与最佳归并树
c语言·数据结构·c++·笔记·考研·算法
General_G10 小时前
创建型模式—原型(Prototype)模式
c++·设计模式·原型模式
syagain_zsx10 小时前
protobuf 实战:从 .proto 到 C++ 序列化的完整链路
c++·学习·程序人生·谷歌·protobuf
welfare96210 小时前
新号别搞:C++_list
开发语言·c++
xiaoye-duck10 小时前
《C++ 项目:手写大模型接入 SDK》云端 API 调用基础与 Apifox 调试实战
网络·c++·语言模型
坤坤子吖11 小时前
Linux 线程同步与互斥——条件变量与线程同步
linux·开发语言·c++·笔记·学习