程序运行完了提示遇到断点。。。 感觉是delete的用法错误。麻烦各位看看
#ifndef DYNAMICARRAY_H_
#define DYNAMICARRAT_H_
#include <iostream>
using namespace std;
template <class T>
class DynamicArray
{
public:
DynamicArray(int len = 0);
~DynamicArray();
void insertValue(T val);//插入新元素
void deleteValue(int aIdex);//删除下标为aIdex的元素
void clearArr();//清空数组
const DynamicArray<T> & operator+(const DynamicArray<T> &aRef);
T & operator[](int aIdex);
bool operator==(const DynamicArray<T> &aRef);
void display();
private:
T *Arr;
int _len;
int _max;
};
template <class T>
DynamicArray<T>::DynamicArray(int max)
{
_max = max;
_len = 0;
Arr = new T[_max];
}
template <class T>
DynamicArray<T>::~DynamicArray()
{
delete []Arr;
Arr = 0;
}
template <class T>
void DynamicArray<T>::insertValue(T val)
{
if (_len < _max)
{
Arr[_len] = val;
_len++;
}
else
{
_max++;
T *temp = new T[_len+1];
for (int i = 0; i < _len; i++)
{
temp[i] = Arr[i];
}
temp[_len] = val;
delete []Arr;
Arr = temp;
_len++;
}
}
template <class T>
void DynamicArray<T>::deleteValue(int aIdex)
{
if (aIdex >= 0 || aIdex < _len)
{
for (int i = aIdex; i < _len; i++)
{
Arr[i] = Arr[i+1];
}
_len--;
}
else
cout << "下标不正确!";
}
template <class T>
void DynamicArray<T>::clearArr()
{
for (int i = 0; i < _len; i++)
{
Arr[i] = 0;
}
_len = 0;
_max = 0;
}
template <class T>
const DynamicArray<T> &DynamicArray<T>::operator+(const DynamicArray<T> & aRef)
{
if ((_len+aRef._len) > _max)
{
_max = _len + aRef._len;
T *temp = Arr;
Arr = new T[_max];
Arr = temp;
for (int i = _len,j = 0; i < _max; i++,j++)
{
Arr[i] = aRef.Arr[j];
}
_len = _max;
}
else
{
for (int i = _len,j = 0; j < aRef._len; i++,j++)
{
Arr[i] = aRef.Arr[j];
}
_len += aRef._len;
}
return *this;
}
template <class T>
T &DynamicArray<T>::operator[](int aIdex)
{
if (aIdex >= 0 && aIdex < _len)
{
return Arr[aIdex];
}
}
template <class T>
bool DynamicArray<T>::operator==(const DynamicArray<T> & aRef)
{
if (_len == aRef._len)
{
for (int i = 0;i < _len; i++)
{
if (Arr[i] != aRef.Arr[i])
{
return false;
}
}
return true;
}
else
return false;
}
template <class T>
void DynamicArray<T>::display()
{
cout << "总共" << _len << "个元素:" << endl;
if (_len > 0)
for (int i = 0; i < _len; i++)
{
cout << Arr[i] << endl;
}
}
#endif
