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

相关推荐
张健11564096486 小时前
使用信号量限制并发数量
开发语言·c++
jc06206 小时前
6.1云原生之Docker
c++·docker·云原生
叶子野格9 小时前
《C语言学习:指针》12
c语言·开发语言·c++·学习·visual studio
Fuyo_11199 小时前
C++ 内存管理
c++·笔记
澈20710 小时前
C++面向对象:类与对象核心解析
c++·算法
6Hzlia10 小时前
【Hot 100 刷题计划】 LeetCode 141. 环形链表 | C++ 哈希表直觉解法
c++·leetcode·链表
handler0111 小时前
Linux 进程探索:从 PCB 管理到 fork() 的写时拷贝
linux·c语言·c++·笔记·学习
众少成多积小致巨12 小时前
GNU Make 核心指南
android·c++
谭欣辰12 小时前
详细讲解 C++ 状压 DP
开发语言·c++·动态规划
William_wL_12 小时前
【C++】stack和queue的使用和实现(附加deque的简单介绍)
开发语言·c++