#pragma once
#include<iostream>
#include<string>
#include<memory>
#include<cstring>
using namespace std;
template<class T>
class myArray
{
private:
T * pAddress;
int m_Capacity;
int m_Size;
public:
myArray(int capacity=0, int size=0):m_Capacity(capacity), m_Size(size)
{
this->pAddress = new T[m_Capacity];
}
myArray(const myArray & oldArr)
{
this->m_Size = oldArr.m_Size;
this->m_Capacity = oldArr.m_Capacity;
this->pAddress = new T[m_Capacity];
for (size_t i = 0; i < m_Capacity; i++)
{
this->pAddress[i] = oldArr.pAddress[i];
}
}
myArray& operator=(const myArray& oldArr)
{
//先清空当前对象
if (this->pAddress != nullptr)
{
delete[] pAddress;
m_Capacity = 0;
m_Size = 0;
}
//深拷贝
this->m_Size = oldArr.m_Size;
this->m_Capacity = oldArr.m_Capacity;
this->pAddress = new T[m_Capacity];
for (size_t i = 0; i < m_Capacity; i++)
{
this->pAddress[i] = oldArr.pAddress[i];
}
return *this;
}
T& operator [](int index)
{
return pAddress[index];
}
// 尾删法
bool myPop()
{
if (this->m_Size==0)
{
return false;
}
// delete this->pAddress+m_Size-1;
// this->pAddress[m_Size-1] = nullptr;
m_Size--;
return true;
}
// 尾插法
bool myPush(T& newItem)
{
if (this->m_Size==this->m_Capacity)
{
return false;
}
this->pAddress[m_Size] = newItem;
m_Size++;
return true;
}
~myArray(){
if (this->pAddress != nullptr)
{
delete[] this->pAddress;
this->pAddress = nullptr;
m_Capacity = 0;
m_Size = 0;
}
}
int getCapacity()
{
return this->m_Capacity;
}
int getSize()
{
return this->m_Size;
}
};
05-20
1744
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)