2015-10-26 3 views
0
Term *temp; 
temp = new Term[(getCapacity() + 1)]; 
capacity++; 
temp = ptr; 
ptr[getEltsInUse()] = T; 
eltsInUse++; 
delete [] ptr; // reclaim space 
ptr = temp; 

Я работаю с объектом Array, и здесь я пытаюсь добавить объект к массиву, когда он заполнен. Здесь он объявляет временный указатель на один размер больше и копирует оригинал в temp, а затем удаляет оригинал. Последняя строка предназначена для перемещения указателя ptr, указывающего на то же, что и temp, но я не уверен, что я сделал это правильно. Псевдо-код, который я получил это:Расширение объекта массива и перемещение указателя?

  1. Declare Term * Температура
  2. новый массив Term размера емкости + 1 для температуры, чтобы указать на
  3. ИНК мощностью
  4. Копирование элементов из PTR массив временного массива
  5. Установите новый срок на конце
  6. вкл eltsInUse
  7. удалить PTR, чтобы освободить старый массив
  8. Установить точку ptr, где временные точки (вновь построенный массив)

Извините, если это действительно очевидный ответ.

+1

'temp = ptr;' Теперь вы потеряли память, которую вы только что выделили, почему это даже там? – user657267

ответ

0

Что-то вроде этого?

Term *temp; 
temp = new Term[capacity + 1];  //allocate memory for capacity + 1 

for (int i = 0; i < capacity; i++) //copy the old data to the new memory 
    temp[i] = ptr[i]; 

temp[capacity++] = NewElement;  //copy new element to last place in new memory 
delete ptr;      //free old memory. 
ptr = temp; 
Смежные вопросы