public:
void PushBack(const DataType& data)
{
_CheckCapacity();
_array[_size++] = data;
}
void PopBack()
{
assert(!Empty());
--_size;
}
void Print()
{
for (size_t i = 0; i < _size; ++i)
{
cout << _array[i] << " ";
}
cout << endl;
}
// 给顺序表重新赋值,该函数执行完里面存放了n个元素data
void Assign(size_t n, const DataType& data)
{
assert(n<_size);
for (size_t i = 0; i<n; i++)
_array[i] = data;
}
// 在顺序表的pos位置上插入元素data
void Insert(size_t pos, const DataType& data)
{
assert(pos<_size); //需检验pos的合法性
_CheckCapacity();
if (pos == _size - 1) //在最后一个位置插入数据等于尾插
{
PushBack(data);
return;
}
else
{
for (size_t i = _size; i > pos; --i)
{
_array[i] = _array[i - 1];
}
_array[pos] = data;
_size++;
}
}
// 删除顺序表pos位置上的元素
void Erase(size_t pos)
{
assert(pos<_size); //需检验pos的合法性
if (pos == _size - 1) //在最后一个位置删除数据等于尾删
{
PopBack();
return;
}
else
{
for (size_t i = pos; i < _size - 1; i++)
{
_array[i] = _array[i + 1];
}
--_size;
}
}
// 改变顺序表中的元素为n个,如果n>原来顺序表中的元素的个数,多出来的空间
// 请用data来填充
void ReSize(size_t n, const DataType& data = DataType())
{
if (n > _size)
{
size_t i = _size;
_size = n;
_CheckCapacity();
for (i; i < n; i++)
_array[i] = data;
}
else
{
size_t i = n;
for(i; i<_size; i++)
PopBack();
}
}
// 清空顺序表中的元素-->请自己动手验证是否需要清理vector中的空间
void Clear()
{
delete[] _array;
_array = NULL;
_size = 0;
_capacity = 0;
}
// 返回顺序表中有效元素的大小
size_t Size()const
{
return _size;
}
// 返回顺序表中空间容量的大小
size_t Capacity()const
{
return _capacity;
}
// 顺序表是否为空,若为空返回true,否则返回null
bool Empty()const
{
return _size == 0;
}