RealLocation Boost :: Shared_Array
Вопрос
У меня есть Shared_array: Boost :: Shared_Array Myarr (New Char [M_Length]);
Я хотел бы перераспределить массив. Я подумал о создании нового Shared_Array с нужным размером и используя метод Boost Swap, но это также будет скопировать счетчик ссылок. У вас есть еще одна идея?
//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);
}
Решение
Почему бы не просто вместо этого использовать boost::shared_ptr<std::vector<char> >
? Пусть стандартная библиотека рецензирует изменение размера.
(На самом деле, в зависимости от того, почему вы использовали Shared_Array в первую очередь, вы вполне можете сойти с помощью просто используя STD :: Vector, и проезжая его по ссылке.)
Другие советы
Boost :: Shared_Array :: Сброс должен сделать трюк
myarr.reset(new char[new_length]);
Boost :: Shared_Array :: RESET Удаляет старый выделенный массив, поднимая его в недавно выделенный.
Редактировать: игнорировать этот ответ, это не решает его проблему