J'ai un shared_array: boost :: shared_array myarr (new char [m_length]);réaffectation boost :: shared_array
Je voudrais réallouer le tableau. J'ai pensé à créer un nouveau shared_array avec la taille désirée et en utilisant la méthode swap boost mais cela copiera également le nombre de références. Avez-vous une autre idée?
//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);
}
Je souhaite m'assurer que le contenu n'est pas copié par valeur. C'est pourquoi j'utilise shared_array. Comment est la performance de boost :: sharerd_ptr :: vector –
Tal
Un shared_ptr à un vecteur va probablement créer un niveau supplémentaire d'indirection, mais sinon tout est aussi soigné que possible - les données sont contiguës. Si tout ce que vous voulez faire est d'empêcher la copie, vous pouvez simplement créer une classe héritant de boost :: noncopyable, avoir un membre std :: vector et exposer l'interface désirée. –