2013-05-13 13 views
6

Ora sto riscrivendo una parte del mio codice per utilizzare lo standard C++ 11. In alcuni luoghi ho trovato il seguente codice:Ha senso usare std :: shared_ptr <std::vector> invece di boost :: shared_array?

boost::shared_array<uint8_t> array; 

fa per sostituirla con:

std::shared_ptr<std::vector<uint8_t>> array; 

che sto cercando di sostituire la funzionalità di tutte le spinta che ha già presentato in C++ 11 nel mio codice.

Ho bisogno di chiarire un po '. In realtà ho bisogno di un array raw (ma con refcount, quindi può essere cancellato automaticamente), non c'è bisogno di tutte quelle funzionalità vettoriali. Quindi boost :: shared_array risolve il problema che voglio senza costi aggiuntivi. Ma sto cercando di fare in modo che il mio codice usi il nuovo standard il più possibile (anche se molte librerie di boost non sono ancora coperte dal nuovo standard).

Grazie.

+0

Beh, in questo caso è possibile eliminare una dipendenza di boost. Per il resto, è funzionalmente equivalente a un livello elevato. –

risposta

4

Dato lo stato attuale delle cose nel supporto C++ 11 nei compilatori e la pigrizia delle persone che stanno costruendo build, vorrei lasciarlo così com'è adesso. Boost ha la proprietà di lavorare virtualmente ovunque, compresi i vecchi compilatori, e il cambiamento che si desidera apportare difficilmente migliorerà il codice.

Anche questo codice non è esattamente lo stesso.

+0

Grazie. È stato forse difficile aggiungere shared_array e/o scope_array allo standard? Mi stavo solo chiedendo. – maverik

+4

@maverik: C++ 11 ha 'shared_ptr ' e 'unique_ptr ' specializzazioni, che immagino complemento esattamente di quello scopo. – rubenvb

+0

@rubenvb, bella osservazione. – maverik

Problemi correlati