MyArray数组笔记(模板的使用 )

MyArray数组笔记

#define _CRT_NO_SECURE_WARNINGS
#include
using namespace std;
template<class T>
class MyArray
{
public:
    MyArray(int capacity)
    {
        this->mcapacity = capacity;
        this->msize = 0;
        this->mpaddr = new T[this->mcapacity];


    }
    MyArray (const MyArray &arr)
    {
        this->msize = arr.msize;
        this->mcapacity = arr.mcapacity;
        this->mpaddr = new T[this->mcapacity];
        for ( i = 0; i < this->msize; i++)
            {
            this->mpaddr[i] = arr.mpaddr[i];

            }
    }
    MyArray operator=(const MyArray &arr)//重载拷贝构造
    {

        if (this->mpaddr!=NULL)
        {
            delete[] this->mpaddr;
        }
        this->msize = arr.msize;
        this->mcapacity = arr.mcapacity;
        this->mpaddr = new T[this->mcapacity];
        for (i = 0; i < this->msize; i++)
        {
            this->mpaddr[i] = arr.mpaddr[i];

        }
        return *this
    }
    T & operator[](int index)//重载[]
    {

        this->mpaddr[index];

    }
    //容器都是值寓意,而非引用寓意,向容器中放入元素,都是放入拷贝分
    void PushBack(T &&data)//双引用可以接受右值
    {
        if (this->msize!=this->mcapacity)
        {
            this->mpaddr[msize] = data;
        }
        this->msize++;

    }

    ~MyArray()
    {
        if (this->mpaddr!=NULL)
        {
            delete[] this->mpaddr;
        }
    }


public:
    //一共可以容下多少个元素
    int msize;
    //当前数组有多少元素
    int mcapacity;
    //保存数据的首地址
    int *mpaddr;
private:

};
void test()
{
    MyArray<int>p(10);
    p.PushBack(10);
    p.PushBack(20);
    for ( int i = 0; i < p.msize; i++)
    {
        cout << p.mpaddr[i] << endl;
    }

}

int main(void)
{
    test();
    system("pause");


}

MyArray数组笔记(模板的使用 )_第1张图片

你可能感兴趣的:(STL(C++))