перераспределение наддува :: shared_array - PullRequest
0 голосов
/ 06 декабря 2010

У меня есть shared_array: boost :: shared_array myarr (новый символ [m_length]);

Я хотел бы перераспределить массив. Я думал о создании нового shared_array с требуемым размером и использовании метода повышения подкачки, но это также скопирует количество ссылок. У вас есть другая идея?

//new_length>m_length
void func(boost::shared_array<char> &myarr,int new_length)
{
       boost::shared_array<char> new_arr(new char[new_length]);
       myarr.swap(new_arr);
}

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

Почему бы просто не использовать boost::shared_ptr<std::vector<char> >?Пусть стандартная библиотека обрабатывает изменение размера.

(На самом деле, в зависимости от того, почему вы вначале использовали shared_array, вам вполне может быть достаточно просто использовать std :: vector и тщательно передавать его по ссылке..)

1 голос
/ 06 декабря 2010

boost :: shared_array :: reset должен помочь

myarr.reset(new char[new_length]);

boost :: shared_array :: reset удаляет старый выделенный массив, заменяя его новым выделенным.

Изменить: Игнорировать этот ответ, он не решает его проблему

...