• C++:类模板的应用实现动态数组


    #include
    using namespace std;
    #pragma once
    template
    class MyArray
    {
        public:
            explicit MyArray(int capacity)  //容量
            {
                this->m_Capacity=capacity;
                this->m_Size=0;
                //如果T是对象,那么这个对象必须提供默认的构造函数

                pAddress=new T[this->m_Capacity];  //容量的大小
            }

            //拷贝构造
            MyArray(const MyArray & arr)
            {
                this->m_Capacity=arr.m_Capacity;
                this->m_Size=arr.m_Size;
                this->pAddress=new T[this->m_Capacity];
                for(int i=0;im_Size;i++)
                {
                    this->pAddress[i]=arr.pAddress[i];
                }
            }

            //重载[]操作符arr[0]
            T & operator [](int index)
            {
                return this->pAddress[index];
            }

            //尾插法
            void Push_back(const T & val)
            {
                if(this->m_Capacity==this->m_Size)
                {
                    return;
                }
                this->pAddress[this->m_Size]=val;
                this->m_Size++;
            }

            void Pop_back()
            {
                if(this->m_Size==0)
                {
                    return;
                }
                this->m_Size--;
            }

            int getSize()
            {
                return this->m_Size;
            }

            //析构函数
            ~MyArray()
            {
                if(this->pAddress!=NULL)
                {
                    delete[]this->pAddress;
                    this->pAddress=NULL;
                    this->m_Capacity=0;
                    this->m_Size=0;
                }
            }

        private:
            T *pAddress;   //指向一个堆空间,这个空间存储真正的数据
            int m_Capacity; //容量
            int m_Size;  //大小

    };


    int main(int argc, char *argv[])
    {

        return 0;
    }
     

  • 相关阅读:
    npx是什么命令?npx和npm有什么区别?
    SDS-PAGE蛋白分子分析(考染)
    【2023】Redis缓存高并发
    C语言 基础开发----目录
    SpringBoot-SpringBoot中文文档
    Go 语言使用 XORM 操作 MySQL 的陷阱
    我是一个Dubbo数据包...
    04 class文件格式
    《七月集训》第十三日——双向链表
    Andoird使用Room实现持久化及使用Room进行增删查改
  • 原文地址:https://blog.csdn.net/qq_63626307/article/details/126844408