riallocando boost :: shared_array
Domanda
Ho uno shared_array: boost :: myarr shared_array (new char [m_length]);
Vorrei allocare la matrice. Ho pensato di creare una nuova shared_array con la dimensione voluta e utilizzando il metodo spinta di swap, ma questo copierà il conteggio referance pure. Hai un'altra idea?
//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);
}
Soluzione
Perché non basta invece utilizzare un boost::shared_ptr<std::vector<char> >
? Lasciate che lo standard maniglia ridimensionamento biblioteca.
(In realtà, a seconda del motivo si stava utilizzando shared_array, in primo luogo, si potrebbe anche uscire solo con utilizzando uno std :: vector, e passando in giro per riferimento con attenzione.)
Altri suggerimenti
boost :: :: shared_array ripristino dovrebbe fare il trucco
myarr.reset(new char[new_length]);
boost :: :: shared_array Reset cancella il vecchio array allocato, scambiando con quello appena allocato.
Modifica: Ignorare questa risposta, non risolve il suo problema