Для начала эта проверка в некоторых функциях-членах (например, включая insert
)
if (index >= arrSize || index < 0)
^^^^^^^^^^
не имеет смысла, поскольку переменная index
, объявленная как имеющая тип unsigned int, никогда не может быть отрицательной. Таким образом, вы можете исключить второе подусловие оператора if.
В функции pushBack
в этом цикле
for (unsigned int i = 0; i < capacity; ++i)
{
arrTemp[i] = arr[i];
}
subritute capacity
для arrSize
.
Также удалите оператор
capacity++;
, поскольку в этом операторе уже была увеличена емкость
arrTemp = new T[capacity += 1];
В функции insert
измените этот фрагмент кода
else if (index == capacity)
{
pushBack(item);
}
else if (0 <= index && index <= size())
{
arr[index] = item;
}
*От 1025 * до
if ( arrSize <= index )
{
pushBack(item);
}
else
{
arr[index] = item;
}
И вы можете удалить элемент данных
unsigned int index;
, поскольку он не используется.
Обратите внимание, что стирание функции-члена такженеверен. По крайней мере, нет необходимости перераспределять массив и изменять его емкость. И снова здесь вдвое уменьшается емкость.
arrTemp = new T[capacity -= 1];
//...
capacity--;
, то есть функция имеет те же дефекты, что и функция pushBack. И в цикле вы справляетесь со стертым элементом.