O boost :: ptr_vector deve ser usado no lugar std :: vector o tempo todo?

Apenas uma questão conceitual que eu tenho encontrado. No meu projeto atual parece que estou usando demais o impulsosmart_ptr eptr_container bibliotecas. Eu estava criandoboost::ptr_vectors em muitos objetos diferentes e chamando o método transfer () para mover certos ponteiros de umboost::ptr_vector para outro.

No meu entender, é importante mostrar claramente a propriedade dos objetos alocados no heap.

Minha pergunta é, seria desejável usar essas bibliotecas de impulso para criar membros alocados em heap que pertençam a um objeto, mas então usar ponteiros normais para esses membros viaget() ao fazer qualquer processamento.

Por exemplo ... Um jogo pode ter uma coleção de Ladrilhos que pertencem a ele. Pode fazer sentido criar essas peças em umboost::ptr_vector. Quando o jogo acabar, estes blocos devem ser automaticamente liberados.

No entanto, se eu quiser colocar esses Tiles em um objeto Bag temporariamente, devo criar outroboost::ptr_vector no saco e transfira as peças do jogo para o saco viatransfer() ou devo criar umstd::vector<Tile*> onde os Tiles * fazem referência aos Ladrilhos no Jogo e passam isso para o Saco?

Obrigado.

** Editar Devo salientar que no meu exemplo O Jogo teria um objeto Bag como membro. O Bag só seria preenchido com o Tiles que o jogo possui. Então o saco não existiria sem o jogo.

questionAnswers(8)

yourAnswerToTheQuestion