实现一个通用的数组类
- 可以对内置数据类型以及自定义数据类型的数据进行存储
- 将数组中的数据存储到堆区
- 构造函数中可以传入数组的容量
- 提供对应的拷贝构造函数以及 operator=防止浅拷贝问题
- 提供尾插法和尾删法对数组中的数据进行增加和删除
- 可以通过下标的方式访问数组中的元素
- 可以获取数组中当前元素个数和数组的容量
myArray.hpp
#pragma once
#include <iostream>
using namespace std;
template<class T> class MyArray {
public:
MyArray(int capacity) {
this->m_Capacity = capacity;
this->m_Size = 0;
this->pAddress = new T[this->m_Capacity];
}
~MyArray() {
if (this->pAddress != NULL) {
delete[]this->pAddress;
this->pAddress = NULL;
}
}
void Push_Back(const T& val) {
if (this->m_Capacity == this->m_Size) {
return;
}
->pAddress[->m_Size] = val;
->m_Size++;
}
{
(->m_Size == ) {
;
}
->m_Size--;
}
T& [] ( index) {
->pAddress[index];
}
{
->m_Capacity;
}
{
->m_Size;
}
( MyArray& arr) {
->m_Capacity = arr.m_Capacity;
->m_Size = arr.m_Size;
->pAddress = T[arr.m_Capacity];
( i = ; i < ->m_Size; i++) {
->pAddress[i] = arr.pAddress[i];
}
}
MyArray& =( MyArray& arr) {
(->pAddress != ) {
[]->pAddress;
->pAddress = ;
->m_Size = ;
->m_Capacity = ;
}
->m_Capacity = arr.m_Capacity;
->m_Size = arr.m_Size;
->pAddress = T[arr.m_Capacity];
( i = ; i < ->m_Size; i++) {
->pAddress[i] = arr.pAddress[i];
}
*;
}
:
T* pAddress;
m_Capacity;
m_Size;
};