Vector-Eintrag löschen
-
Hallo!
Ich habe einen vector(Struktur) und möchte den i-ten Eintrag löschen.
ich habe folgendes probiert:int i; v.erase(i);
Doch ich bekomme folgende Fehlermeldung:
E2285 Keine Übereinstimmung für 'vector<Tvstruc,allocator<Tvstruc> >::erase(int)' gefunden
Wer kann mir weiterhelfen?
Viele Grüße
-
Zeig mal die Deklaration.
Achja, verschoben nach "C++".
-
es gibt nur
erase (Iterator); //und erase (Iterator begin, Iterator end);
und damit geht dann auch nur
vector<X> v; //... int i; v.erase (v.begin()+i); //oder v.erase (&v[i]); //da Iterator ein Zeiger ist (bei vector) //oder natürlich auch v.erase (advance(v.begin(),i)); //advance aus <iterator>
-
davie schrieb:
//oder v.erase (&v[i]); //da Iterator ein Zeiger ist (bei vector)
Ich glaube nicht, dass das garantiert wird, auch wenn ein vector mittlerweile einen zusammenhängenden Speicherbereich verwenden muss.
-
gcc ab Version 3 macht das z.B. nicht mehr mit
-
oh, ok..
-
Danke!
Habe
v.erase (&v[i]);
genommen. Das funktioniert bestens.
Viele Grüße
-
lol