Frank schrieb:
> Hallo, ich möchte gerne einen Vektor erstellen, dessen länge variable
> ist. ICh habe die zwei variablen N und M. Diese sind immer
> unterschiedlich, mal 5,20,100 oder anders.
> Jetzt möchte ich gerne einen Vektor erstllen int Vektor[N*M];Da gibt er
> mir aber einen Fehler mit: Konstantenausdruck erwartet.
> Aber N*M bleibt ja konstant. Wenn die wieder geändert werden, soll er
> halt den Vektor neu berechnen
>
> Wie kann ich sonst den Vektor erstellen?
Entweder über den vector Datentyp:
1 | #include <vector>
|
2 |
|
3 |
|
4 | std::vector<int> myVector;
|
5 | myVektor.resize(N*M);
|
6 |
|
7 | // ab jetzt ganz normaler Zugriff wie auf C Arrays über Indexoperator
|
8 | myVektor[4]=-1;
|
9 | if(myVektor[4]==-1)
|
10 | {
|
11 | // usw ...
|
12 | }
|
Oder über C Arrays, aber um Speicherlecks zu vermeiden sollte man noch
eine Klasse rumbauen, die den Speicher sicher freigibt:
1 | #include <boost/scoped_array.hpp> // oder so ähnlich, bin jetzt nicht sicher!
|
2 |
|
3 | boost::scoped_array myVektor(new int[N*M]);
|
4 | myVektor[4]=-1;
|
5 | //usw...
|
6 | // kein Löschen mit delete[] nötig, das erledigt boost::scoped_ptr für dich
|