2013-05-24 1 views
1

Я недавно прочитал о размещении новых, и я хотел бы использовать его в одном из моих заданий. Мне не разрешено использовать контейнеры stl, поэтому я хотел бы создать вектор, подобный контейнеру. Итак, скажем, я предопределяю 10 слотов в массиве для хранения моих объектов, а затем пользователь добавляет 11 элементов. Как я могу использовать новое размещение для хранения первых 10 объектов, просто скопировав их в массив, а затем инициализировав новый объект и добавив его в вектор?размещение новых с пулами памяти

текущий код, я использую для дополнительного пространства распределения заключается в следующем:

template <class T> 
void Vector<T>::allocMem(int objects) 
{ 
    T *_new_data = new T[2*capacity]; 

    for(int i = 0; i < size(); i++) 
    { 
     _new_data[i] = _data[i]; 
    } 

    delete [] _data; 

    _data = _new_data; 

    capacity = 2*capacity; 
} 

И в месте, что я хотел бы добавить использование размещения нового.

ответ

0
T *_new_data = (T*)new char[sizeof(T)*2*capacity]; 

for(int i = 0; i < size(); i++) 
{ 
    new (_new_data + i) T(_data[i]); 
} 

C++ placement new Смотрите также

+0

Спасибо большое ... На самом деле это было проще, чем я, хотя, но опять THx много. –

Смежные вопросы