动态数组自实现
初级版本(还有很多地方后续再完善)
#include <iostream>
using namespace std;
template<class T>
class Vector
{
public:
T* pArrr; //保存数据的首地址
int m_capcity; //容量
int m_size; //当前长度
public:
Vector(int capacity)
{
m_capcity = capacity;
m_size = 0;
//申请内存
pArrr = new T[m_capcity];
}
//拷贝构造
Vector(const Vector<T>& v)
{
m_size = v.m_size;
m_capcity = v.m_capcity;
//申请内存空间
pArrr = new T[m_capcity];
//数据拷贝
for (int i = 0;i<m_size;i++)
{
pArrr[i] = v.pArrr[i];
}
}
//随机访问
T& operator[](int index)
{
return pArrr[index];
}
//重载=运算符
Vector<T> operator=(const Vector<T>& v)
{
if (pArrr != NULL)
{
delete[] pArrr;
}
m_size = v.m_size;
m_capcity = v.m_capcity;
//申请内存空间
pArrr = new T[m_capcity];
//数据拷贝
for (int i = 0; i < m_size; i++)
{
pArrr[i] = v.pArrr[i];
}
return *this;
}
//压入元素
void Push_back(T& data)
{
//判断容器中是否有位置
if (m_size == m_capcity)
{
return;
}
pArrr[m_size] = data;
m_size++;
}
//压入元素 对右值去引用
void Push_back(T&& data)
{
//判断容器中是否有位置
if (m_size == m_capcity)
{
return;
}
pArrr[m_size] = data;
m_size++;
}
~Vector()
{
if (pArrr == nullptr) return;
delete[] pArrr;
}
};
int main()
{
Vector<int>m(20);
int a = 10;
int b = 20;
m.Push_back(a);
m.Push_back(b);
m.Push_back(100);
m.Push_back(200);
for (int i = 0;i<m.m_size;i++)
{
cout << m[i] << endl;
}
return 0;
}