DynamicArray.h
#pragma once
#include <iostream>
using namespace std;
template <class T>
class CDynamicArray
{
public:
CDynamicArray();
~CDynamicArray();
private:
int Size = 5;
int Length = 0;
T* array;
const int increase = 5;
private:
bool Resize(int number);
public:
T& operator [](int num);
void Display(void);
};
DynamicArray.cpp
#include "DynamicArray.h"
template<class T>
CDynamicArray<T>::CDynamicArray()
{
array = new T[Size];
}
template<class T>
CDynamicArray<T>::~CDynamicArray()
{
delete array;
array = nullptr;
}
template<class T>
bool CDynamicArray<T>::Resize(int number)
{
if (number < 0) {
return false;
}else if (number < Size) {
return true;
}
while(number >= Size) {
int length = Size;
Size += increase;
T* newArray = new T[Size];
for (int i = 0; i < length; i++) {
newArray[i] = array[i];
}
delete array;
array = nullptr;
array = newArray;
return true;
}
return false;
}
template<class T>
T& CDynamicArray<T>::operator[](int num)
{
if (num > Length) {
Length = num;
}
if (Resize(num)) {
return array[num];
}
}
template<class T>
void CDynamicArray<T>::Display(void)
{
for (int i = 0; i < Length + 1; i++) {
cout << array[i] << endl;
}
}
mian.cpp
#include "DynamicArray.h"
#include "DynamicArray.cpp"
void main() {
CDynamicArray<int> arr;
for (int i = 0; i < 13; i++) {
arr[i] = i;
}
arr.Display();
system("pause");
}