Vektorelement löschen, Problem mit Pointer
-
Ich habe einen Vektor mit einer Datenstruktur. Das ganze sieht so aus:
container->vector[i]->Attribut1
container->vector[i]->Attribut2
container->vector[i]->Attribut3nun möchte ich, nicht das ganze Element vector[i] löschen, sondern nur
container->vectorelement[i]->Attribut1Mein Versuch:
container->vector.erase(container->vector[i]->Attribut1)
bringt folgende Fehlermeldung:
error C2664: 'class ShapeData **__thiscall std::vector<class ShapeData *,class std::allocator<class ShapeData *> >::erase(class ShapeData ** ) ' : Konvertierung des Parameters 1 von 'char [128]' in 'class ShapeData ** ' nicht moeglichDas heisst doch, dass "container->vector[i]->Attribut1" dereferenziert werden muss, oder?
container->vector.erase(container->vector*)(container->vector[i]->Attribut1)
hat die gleiche FMeldung gebracht.
Habe Referenzen und Pointer noch nicht wirklich geblickt, wie ihr seht...
Hoffe auf Erklärung
-
Der Vektor hat mit der Struktur der in ihm gespeicherten Elemente überhaupt nichts zu tun. Du kannst aus dem Vektor ganze Elemente löschen oder es bleiben lassen.
Wenn Du in einer Struktur ein Element (== Zeiger) löschen (== deleten) willst, kannst Du das gern tun, aber nicht mit den Zugriffsfunktionen des Vektors.
-
container->vector[i]->Attribut1[0] = 0;