Внутри функции insert я использую динамическое выделение памяти с массивами ditems и tempItems .
Где я использую tempItems , чтобы быть массивом, вдвое большим, чем ditems , а также временно хранить все элементы из ditems ; а затем удаляя и присваивая ditems равный tempItems
Код соответствует требованиям, но при тестировании с достаточным количеством данных, требующих ditems для хранения 2000 элементов, создается впечатление, что массив ditems не становится больше. Однако если я должен был установить (arrayCap = 2001;) в конструкторе, тогда проблем нет.
Я новичок в использовании динамических массивов и смотрю другой код с использованием динамических массивов, похоже, я не допустил никаких ошибок. Я не могу использовать векторы для этой задачи, поэтому я застрял с динамическими массивами, но я не уверен, что здесь не так.
template <class T>
class Vector {
public:
typedef T* iterator;
Vector () {
arrayCap=1000;
ditems = new T[arrayCap];
}
T& operator[](unsigned int i) {
return ditems[i];
}
iterator begin () {
used=0;
return &ditems[used];
}
iterator end () {
return &ditems[used];
}
int size () { return used; }
void deletes(){
used--;
}
iterator insert (iterator position, const T& item) {
if(arrayCap-used<100)
{
temp=arrayCap;
arrayCap=2*arrayCap;
tempItems=new T[arrayCap];
for(int i=0; i<temp;i++)
{
tempItems[i]= ditems[i];
}
delete [] ditems;
ditems=tempItems;
}
for(Vector<T>::iterator i=&ditems[arrayCap-1]; i>position; i--)
{
*i=*(i-1);
}
used++;
*position= item;
return position;
}
private:
int arrayCap,temp;
T *ditems;
T *tempItems;
int used;
};