Necesito un contenedor de punteros. ¿Recomendaría boost::ptr_vector<T>
o std::vector<boost::shared_ptr<T> >
? (¿O algo más?)¿Debo usar boost :: ptr_vector <T> o vector <boost :: shared_ptr <T>>?
Si eso es de interés, mi estructura de datos real es relativamente complicada (ver here) y actualmente almacena objetos, no punteros, pero me gustaría cambiar eso (usando contenedores de puntero), en orden para deshacerse de copias innecesarias:
typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
¿Dónde ocurre esta copia innecesaria? –
@Idan: Cada vez que insertas algo en el vector o multimapa desde arriba. – Frank
@Idan: cuando tiene un contenedor que almacena punteros, solo se copiará el puntero al agregar datos, cuando almacene objetos, se copiarán los objetos reales. Este es un problema cuando se trata de objetos que son caros de copiar. – sbi