wie löscht man die ersten x elemente eines vektors?
-
wie der titel schon sagt, kann mir da jemand vielleicht helfen?
-
mittels erase(). Aber vector ist nicht auf das rauslöschen von Elementen ausgelegt, insbesondere nicht von solchen, die am Anfang des vectors liegen.
Hier sollte man eine geeignetere Datenstruktur wählen, z.B. deque.
-
Hallo,
snoob-y schrieb:
wie der titel schon sagt, kann mir da jemand vielleicht helfen?
das kannst du z. B. so machen:
std::vector<type> vec; //vec mit werten fuellen vec.erase(vec.begin(), vec.begin()+n);
Das loescht die ersten 'n' Elemente.
mfg
v R
-
ist das etwa inperformant?
-
ja, da der vektor nach dem löschen die plätze wieder füllen mus und dann kopiert er alle... das ist nicht gut...
//edit:
ne liste ist auch nicht schlecht, da sie nur mit pointern arbeitet und die pointer dann einfach "verbogen" werden...
-
na dann hab ich ja gleich was , das ich für mein kommendendes release verbessern kann.
-
oder wie schon gesagt "std::deque", die ist performanter bei Elemententfernungen, vor allem vorne: std::deque<T>::pop_front() ist dazu ideal!