Eintrag aus Vector löschen
-
Schönen guten Morgen,
hab foglenden Vector:
struct DataSet
{
int ID;
AnsiString Deutsch;
AnsiString Englisch;
AnsiString Bereich;
};vector <DataSet> Data;
Nun hab ich ein paar Duzend Einträge in Data eingelesen und ich möchte jetzt einen bestimmten löschen. Aber ich kriege es nicht hin.
Data.erase(???);
Ich möchte einen Datensatz komplett löschen (und keine bestimte Variable der Struktur). Danke schon mal für die Hilfe im Vorraus!
Gruß Giovanni
-
Suchfunktion benutzen! Z.B.
http://www.c-plusplus.net/forum/viewtopic.php?t=37016&highlight=vector+erase
-
Für dir mal diese seite hier zu gemüte: Standard Template Library
Da kannst du das auch sehn
-
Es geht immer noch nicht.
Data.erase(Data.beginn()+Position);
[C++ Fehler] CreateArray.cpp(301): E2316 'beginn' ist kein Element von 'vector<CreateArray::DataSet,allocatorCreateArray::DataSet >'
-
wer lesen kann ist klar im vorteil
begin mit einem N!
-
Schönen guten Morgen!
-
Danke! Tut mir leid, aber solche Fehler sind oft die schlimmsten, die nach denen man erst bei der Verzweiflung sucht.
Jetzt gehts!
-
Ich muss noch mal das mit dem "Jetzt tuts" zurücknehmen. Es wird zwar fehlerfrei compiliert, aber zur laufzeit gibts ein problem, wo ich absolut nicht weiter komm.
Also, ich starte das ganze, wähle einen Datensatz zum löschen aus, drücke "Entf" und es kommt er Fehler:
Im Projekt ETrainer.exe ist eine Exception er Klasse EAccessViolation aufgetreten. Meldung: Zugriffsverletzung bei Adresse 00404D23 in Modul ETrainer.exe. Lesen von Adresse 00000000032. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.
Vermutlich hab ich da auf nen Speicherbereich zugegriffen auf den ich nicht zugreifen darf. Hier die Quellcode:
// Hier wird die Elementfunktin DeleteEntry aufgerufen
CreateArray CreateArrayData; // Instanz
if (Key == VK_DELETE)
{
CreateArrayData.DeleteEntry(Trainer->SelektierenView->Selection.Top);
CreateArrayData.CreateTable(Trainer->SelektierenView);
}// Quellcode der Elementfunktion DeleteEntry, hier entsteht der Fehler.
Data.erase(Data.begin()+2);Ich hoffe ich habs ausreichend beschrieben.
Giovanni
-
Hallo, schönen guten Morgen!
Kann mir denn niemand helfen, ich verzweifele schon. Wenn ich die ZeileData.erase(Data.begin()+2);
aus dem Programm entferne dann gibt es keine Fehler mehr, aber ich brauche diese Zeile um einen Datensatz aus meinem Vector zu löschen. Ich komm einfach nicht weiter.
-
Vielleicht greifst du außerhalb des speicherbereichs deines vectors zu, das wäre eine Möglichkeit für die Fehlermeldung.
Geh das ganze mal mit dem Debugger durch und schau dir die Werte von deinem vector und deinen übergabeparametern an.