Mr.Seymour Buds
Commodore
- Registriert
- Feb. 2012
- Beiträge
- 4.380
Hallo,
ich habe folgendes Problem:
Ich habe einen Container (std vector) und in diesem Container liegen Pointer auf (dicke) Objekte. Der Container soll nun ziemlich dynamisch arbeiten, also es sollen ständig Pointer aus diesem Container herausgelöscht bzw. neue Pointer hinzugefügt werden.
Zum Löschen der Pointer habe ich eine kurze Funktion geschrieben. In der Parameterliste der Funktion wird der Funktion bekannt gemacht, welcher Pointer denn nun gelöscht werden soll. Dazu wird der Funktion eine Referenz (&DickesObjektA) übergeben, dann iteriere ich über alle Elemente des Containers und Vergleiche die String-ID jedes Objekt-Pointers mit der String-ID der Referenz (die Objekte haben alle eine ID). In genau einem Fall ist diese ID identisch. Dieses Element wird dann einfach mit containerDingsBums.erase(iterator) gelöscht. Damit ist das Löschen erledigt. Funktioniert soweit gut.
Für das Einfügen eines neuen Pointers nutze ich einfach Push-Back.
Meine Frage lautet nun:
Gibt es einen besseren Ansatz für die Löschfunktion. Also die Vorgehensweise im Allgemeinen. Weil meine Sorge ist, dass mein String-ID Vergleich sehr langsam werden kann, wenn ich sehr viele Pointer in dem Container liegen habe. Welche anderen Ansätze gibt es für sowas? Wie kann ich auf performante Art und Weise herausfinden, welcher Pointer für ein vorgegebenes Objekt in dem Vector zu löschen ist?
Beste Grüße
ich habe folgendes Problem:
Ich habe einen Container (std vector) und in diesem Container liegen Pointer auf (dicke) Objekte. Der Container soll nun ziemlich dynamisch arbeiten, also es sollen ständig Pointer aus diesem Container herausgelöscht bzw. neue Pointer hinzugefügt werden.
Zum Löschen der Pointer habe ich eine kurze Funktion geschrieben. In der Parameterliste der Funktion wird der Funktion bekannt gemacht, welcher Pointer denn nun gelöscht werden soll. Dazu wird der Funktion eine Referenz (&DickesObjektA) übergeben, dann iteriere ich über alle Elemente des Containers und Vergleiche die String-ID jedes Objekt-Pointers mit der String-ID der Referenz (die Objekte haben alle eine ID). In genau einem Fall ist diese ID identisch. Dieses Element wird dann einfach mit containerDingsBums.erase(iterator) gelöscht. Damit ist das Löschen erledigt. Funktioniert soweit gut.
Für das Einfügen eines neuen Pointers nutze ich einfach Push-Back.
Meine Frage lautet nun:
Gibt es einen besseren Ansatz für die Löschfunktion. Also die Vorgehensweise im Allgemeinen. Weil meine Sorge ist, dass mein String-ID Vergleich sehr langsam werden kann, wenn ich sehr viele Pointer in dem Container liegen habe. Welche anderen Ansätze gibt es für sowas? Wie kann ich auf performante Art und Weise herausfinden, welcher Pointer für ein vorgegebenes Objekt in dem Vector zu löschen ist?
Beste Grüße