Ich habe eine shared_array: boost :: shared_array myarr (neue char [m_length]);boost :: shared_array neu zuweisen
Ich möchte das Array neu zuordnen. Ich dachte daran, ein neues shared_array mit der gewünschten Größe zu erstellen und die Swap-Boost-Methode zu verwenden, aber das wird auch die Reference-Anzahl kopieren. Haben Sie eine andere Idee?
//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);
}
Ich möchte sicherstellen, dass der Inhalt nicht nach Wert kopiert wird. Deshalb benutze ich shared_array. Wie ist die Leistung von boost :: shared_ptr :: vector –
Tal
Ein shared_ptr zu einem Vektor wird wahrscheinlich eine zusätzliche Ebene der Indirektion, aber ansonsten ist alles so sauber wie möglich - die Daten sind zusammenhängend. Wenn Sie nur das Kopieren verhindern möchten, können Sie einfach eine Klasse erstellen, die von boost :: noncopyable erbt, ein std :: vector member haben und die gewünschte Schnittstelle verfügbar machen. –