007
21.05.2004, 09:57 Uhr
typecast
aka loddab (Operator)
|
Also vom aufwand her ist deine Methode leider sehr schlecht. Löschen aus einem std::vector ist normalerweise sehr teuer :-(
Wenn ich mich richtig an Info I errinnere, dann achten die meisten Kompiler darauf, dass die Elemente des Vectors immer hintereinander im Speicher stehen (ist afaik nicht vom Standard vorgeschrieben, aber gängige Praxis).
Das heißt, dass wenn du ein Element das sehr weit vorne steht löschst, muss der ganze Rest des Vektors verschoben werden.
Wenn du also viel löschen musst, dann solltest du über den Einsatz einer std::list nachdenken. Bei dieser gibt es afaik dieses Problem nicht.
Ist das nicht möglich, dann solltest du vor dem einfügen in den Vector überprüfen, ob das Element schon vorhanden ist. -- All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925) |