Hallo
Ich habe Verständnisprobleme mit Arrays und Vektoren und möchte um Hilfe bitten Licht ins Dunkle zu bringen.
1.)
Wenn ich im Header setze:
|
C-/C++-Quelltext
|
1
|
#define ADSIZE 20
|
und in der main Funktion:
|
C-/C++-Quelltext
|
1
2
3
|
int Sequenz[ADSIZE];
for(il=0; il<ADSIZE; il++){Sequenz[il]=il;}
for(il=0; il<ADSIZE; il++){cout << Sequenz[il];}
|
Dann wird mir auf der Konsole ein Array von 0 bis 19 angezeigt.
Wenn ich allerdings nicht ADSIZE im Header definiere, sondern in der main Funktion
|
C-/C++-Quelltext
|
1
2
|
const int ADSIZE;
ADSIZE = 20;
|
dann erhalte ich den Compiler Fehler:
|
Quellcode
|
1
2
|
error: uninitialized const ‘ADSIZE’
error: assignment of read-only variable ‘ADSIZE’
|
Bin ich damit also verpflichtet feste Variableninhalte immer mit define zu verwenden? Mir ist es wichtig, dass absolut gesichert ist, dass die Größe ADSIZE niemals von dem C++ Programm geändert werden darf, unter keinen Umständen.
2.)
Wenn ich bis jetzt einen Vektor benötige, dann habe ich ein Array erstellt und dieses dann in einen Vektor umgewandelt. Das finde ich unschön und würde lieber direkt den Vektor definieren. Mein Problem ist nun, dass
|
C-/C++-Quelltext
|
1
2
|
vector<int> sequenz;
for(il=0; il<ADSIZE; il++){sequenz[il]=il;}
|
zu einem Compiler Fehler führt:
|
Quellcode
|
1
|
Segmentation fault
|
Ich habe das Programm mit gdb ausführen lassen und dieses sagt mir:
|
Quellcode
|
1
2
3
|
Program received signal SIGSEGV, Segmentation fault.
0x00000000004007e3 in main () at test.cpp:31
31 for(il=0; il<ADSIZE; il++){sequenz[il]=il;}
|
aber abgesehen davon, dass in der for Schleife was nicht zu stimmen scheint, weiss ich das nicht weiter zu interpretieren.
Also wie kann ich mein Array 0 bis ADSIZE-1 direkt als Vektor deklarieren?
Danke für Hilfe und Grüße