Angenommen ich eine Klasse foo haben, und wollen eine std :: map verwenden, um einige boost :: shared_ptrs zu speichern, zB:boost :: shared_ptr Standardcontainer
class foo;
typedef boost::shared_ptr<foo> foo_sp;
typeded std::map<int, foo_sp> foo_sp_map;
foo_sp_map m;
Wenn ich fügen Sie einen neuen foo_sp auf die Karte aber der verwendete Schlüssel existiert bereits, wird der bestehende Eintrag gelöscht? Beispiel:
foo_sp_map m;
void func1()
{
foo_sp p(new foo);
m[0] = p;
}
void func2()
{
foo_sp p2(new foo);
m[0] = p2;
}
Wird der ursprüngliche Zeiger (p) freigegeben, wenn er durch p2 ersetzt wird? Ich bin mir ziemlich sicher, dass es so sein wird, aber ich dachte, es wäre es wert, gefragt/geteilt zu werden.
Modifizierte Frage - sollte shared_ptr nicht sein auto_ptr, – Rob
Es ist "sollte _have_" –