Dynamisches Array ohne Angabe von Länge erstellen
-
Hallo ich habe eine Aufgabe aus der Uni. Ich soll eine Zahlenfolge komprimieren. Am Anfang wird entweder 0 oder 1 geschrieben um zu sagen ob codiert oder decodiert werdens soll. Dann kommt die eigentliche Zahlenfolge und mit einer 1 wird die Folge beendet. Es gibt keinen Imput zur Länge dieser Folge. Daher wollte ich ein dynamisches Array machen, aber auch der will einen Imput zur Grösse des Arrays (wenn auch erst zur Laufzeit des Arrays). Hat jemand eine Idee wie das realistiert werden kann. Hier mein Code bis jetzt
#include <iostream> int main() { int *code; unsigned short length = 1;//Länge des Arrays "Code". Dient am Anfang als Stellenindikator des Arrays code = new int[]; unsigned short first; std::cin >> first; code[0] = first; while (true) { unsigned int number; std::cin >> number; code[length] = number; if (valid_number(number) == false) { delete code; std::cout << "error"; return 0; } if (number == 1)//Abbruch der Schleife bei erhalt der 1 { break; } } delete code; return 0; }
Vielen Dank
PS: Ich bekomme das irgendwie nicht hin, dass dies schön aussieht. Wie geht das
-
std::vector
-
Ramius schrieb:
Am Anfang wird entweder 0 oder 1 geschrieben um zu sagen ob codiert oder decodiert werdens soll. [...] mit einer 1 wird die Folge beendet.
... also brauchst Du fix Platz für mindestens zwei Werte.
In Deinem Code ... zu
new
gehörtdelete
, zunew[]
gehörtdelete[]
.Ramius schrieb:
Daher wollte ich ein dynamisches Array machen, [...]
Wie manni66 schon schrieb,
std::vector
... oder
new[]
unddelete[]
. (und manuellem Umkopieren beim Wachsen des Speicherbereichs)
... oderstd::malloc()
,std::realloc()
undstd::free()
. (Umkopieren beim Wachsen automagisch)Ramius schrieb:
PS: Ich bekomme das irgendwie nicht hin, dass dies schön aussieht. Wie geht das
Für C++: [cpp] Vor den Code, [/cpp] nach dem Code.