Array variabler Größe
-
Ich muß mit einem Array arbeiten, dessen Größe erst in der Laufzeit festgelegt wird.
Zur Probe habe ich den Codeschnipselint m = 4;
double b[m];for (int i = 0;i<m;i++)
{
b[i] = 1.0;
}getestet. In DevC++ läuft es einwandfrei, aber nicht in VisualStudio2005. Dort kommen für die Zeile double b[m] die Fehlermeldungen
- konstanter Ausdruck erwartet
- Zuordnung eines Arrays konstanter Größe 0 nicht erlaubt
- b unbekannte GrößeIch kann nicht verstehen, warum es in DevC++ geht und in VisualStudio nicht.
Kann mir jemand helfen, da ich VisualStudio benutzen muß.
Mit vielen Dank im voraus
pepe-je
-
pepe-je schrieb:
...warum es in DevC++ geht und in VisualStudio nicht....
Vielleicht DevC++ unterstützt unstandardisierte Zusatzfeatures.
Eigentlich sollte das so auch nicht funktionieren (bzw. nur in ganz bestimmten Situationen mit dem 99er-C-Standard (jedenfalls NICHT unter C++)).
pepe-je schrieb:
Ich muß mit einem Array arbeiten, dessen Größe erst in der Laufzeit festgelegt wird....
Dann arbeite mit std::vector .... das tut's immer und überall und ist sicher.
Gruß,
Simon2.
-
Ist eine Erweiterung des G++, und darauf basiert doch DevC++, oder?
int m = 4; std::vector<double>(m, 1.0); // größe m mit default-belegung 1.0und fertig!
-
Danke für Eure Hinweise, aber ich befürchte, ich habe was nicht richtig gemacht.
Bei mir kommt die Meldung "vector ist kein Element von std"
Könnt Ihr bitte mal im Einzelnen schreiben, was anstelle von double b[m] zu setzen ist?
Danke
pepe-je
-
Hoi,
du musst noch
#include <vector>hinschreiben
-
Hallo, es hat geklappt, vielen Dank!!
Nun entseht gleich die nächste Frage, denn ich habe mit der Klasse vector noch gar keine Erfahrung.
Die Komponenten des Vektors sollen als Parameter einer Funktion dienen. Wie schreibt man das?
Mit Arrays geht es ja so
void function (double b[])
Was kommt in die Klammer, wenn mit vector gearbeitet wird?
Könnt Ihr mir nochmal helfen?
-
Du kannst eine Kopie übergeben:
void foo (std::vector<double> data);, aber ob du das willst ... nein
das ist sehr unperformant. Guck dir mal Referenzen und das Schlüsselwort "const" an 