S
:Daniel: schrieb:
...
Wie würde es aber mit Arrays funktionieren oO?
Vorab: Bei Arrays kannst Du die Größe nicht mehr ändern !! (oder Du musst halt jedesmal händisch kopieren)
D.h. Du entfernst nicht wirklich, sondern lässt nur aufrücken ... aber dafür gibt's Standardfunktionen:
#include <algorithm>
int main() {
int x[10] = {0,1,2,3,4,5,4,7,8,9}; // extra mal 2 4en drin
int y[10] = {0,1,2,3,4,5,6,7,8,9};
// "Entfernen" aller 4en
std::remove(x, x+10, 4);
// -> 0 1 2 3 5 7 8 9 8 9
// "Entfernen" der 4en Position
std::copy(y+5, y+10, y+4);
// -> 0 1 2 3 5 6 7 8 9 9
Bei remove() wird Dir zurückgegeben, wo das neue Array "eigentlich aufhört" ... es geht also auch:
#include <algorithm>
int main() {
int x[10] = {0,1,2,3,4,5,4,7,8,9}; // extra mal 2 4en drin
int* xEnd = x+10;
// Entfernen aller 4en
xEnd = std::remove(x, xEnd, 4);
... und mit (xEnd - x) bekommt man auch die neue "Länge" raus (obwohl x im Speicher natürlich immer noch denselben Speicherplatz belegt).
Prinzipiell gilt: Wenn Du Elemente entfernen willst, muss Dein gesamtes Programm mit einer dynamischen Länge rechnen !! ("nirgends darf mehr eine 10 stehen")
... womit wieder ein Vorteil eines Arrays gegenüber std::vector entfallen wäre
Gruß,
Simon2.