// 通过下边访问顺序表index位置上的元素
// 思考为什么要成对的来重载
DataType& operator[](size_t index)
{
assert(index);
return _array[index];
}
const DataType& operator[](size_t index)const
{
assert(index);
return _array[index];
}
// 返回顺序表中第一个元素的引用,思考为什么要返回应用,为什么要成对重载
DataType& Front()
{
return _array[0];
}
const DataType& Front()const
{
return _array[0];
}
// 返回顺序表中最后一个的元素的引用,思考为什么要返回引用,为什么要成对重载
DataType& Back()
{
return _array[_size - 1];
}
const DataType& Back()const
{
return _array[_size - 1];
}
private:
// 动态扩容-->该函数中有坑,请找出坑在哪?
void _CheckCapacity()
{
// 2*_capacity 有问题?
if (_size >= _capacity)
{
DataType* pTemp = new DataType[_capacity * 2];
//memcpy(pTemp, _array, _size*sizeof(DataType));
for (size_t index = 0; index < _size; ++index)
pTemp[index] = _array[index];
delete[] _array;
_array = pTemp;
_capacity *= 2;
}
}
int Find(const DataType & data)
{
assert(_array != NULL);
for (size_t i = 0; i < _size; i++)
{
if (_array[i] == data)
return i;
}
return -1;
}
private:
DataType* _array;
size_t _size; // 保存有效元素的个数
size_t _capacity; // 空间的实际大小
};
#endif //__VECTOR_H__
代码当中的问题及思考提示将在以后探讨。