Nehmen wir an, ich hätte einige unordered_map
von Zeigern auf Klasseninstanzen, würde das Löschen eines Objekts aus dieser Map auch die Instanz löschen?
(Umformulierung der Frage :) Wenn ich diese Instanz löschen wollte, welche Version wäre richtig?
%Vor%oder einfach
%Vor%?
UPDATE: Wie von vielen Leuten vorgeschlagen, bin ich dazu übergegangen, shared_ptr
zu verwenden, und es funktioniert großartig!
Nein, und da dies mit C ++ 11 markiert ist, sollten Sie std::unique_ptr
/ std::shared_ptr
verwenden, um Ihre Objektzeiger an erster Stelle zu verwalten, z. B.
Auch wenn Sie religiös sicherstellen, dass Ihre Zeiger delete
d vor jedem Aufruf von erase
sind, müssen Sie immer noch überlegen, was im Falle einer Ausnahme passieren würde, oder wenn Sie demselben Schlüssel etwas anderes zuweisen oder irgendeine andere Möglichkeit, die auslaufen könnte. Wenn Sie keinen guten Grund haben, new
und delete
zu verwenden, tun Sie das nicht. Bleiben Sie bei std::unique_ptr
/ std::shared_ptr
und std::make_unique
/ std::make_shared
, es ist sicherer und macht Ihren Code leichter lesbar.