He encontrado un hecho muy perjudicial sobre los mapas stl. Por alguna razón, no puedo insertar objetos en el mapa para construirlos/destruirlos una sola vez.cómo obtener el mapa stl para construir/destruir objeto insertado una sola vez
Ejemplo:
struct MyObject{
MyObject(){
cout << "constructor" << endl;
}
~MyObject(){
cout << "destructor" << endl;
}
};
int main() {
std::map<int, MyObject> myObjectsMap;
myObjectsMap[0] = MyObject();
return 0;
}
devuelve:
constructor
destructor
destructor
constructor
destructor
Si hago:
typedef std::pair<int, MyObject> MyObjectPair;
myObjectsMap.insert(MyObjectPair(0,MyObject()));
devuelve:
constructor
destructor
destructor
destructor
Estoy insertando Objetos responsables de su propia asignación de memoria, por lo que cuando se destruyan se limpiarán ellos mismos, ser destruido varias veces me está causando algunos problemas.
aparentemente, 'std :: map' no ofrece una interfaz sin copia para crear nuevas entradas. Recomiendo los punteros compartidos aquí - 'std :: map >' –