Konstante Vectoren mit n Elementen ohne die Anzahl der Elemente anzugeben
-
Hallo!
const vector<unsigned int> AErlaubteZahlen (16, (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 40, 60, 80, 100, 1000));
Wenn ich einen konstanten Vector mit n Elemente haben, dann muss ich vor der Klammer immer die Anzahl der Elemente (hier 16) angeben. Leider ändere ich aber die Elemente häufig. Daher ändert sich die Anzahl auch immer wieder. Gibt es die Möglichkeit einen konstanten Vector zu erzeugen ohne die Anzahl der Elemente anzugeben. Bei Arrays geht es ja auch:
const unsigned int AErlaubteZahlen[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 40, 60, 80, 100, 1000};
Wie geht das bei Vectoren?
Viele Grüße
pmw
-
indem du es über arrays machst:
int temp[]={1,2,3}; vector<int> vec(temp, temp+(sizeof(temp)/sizeof(temp[0])));
uU wäre aber boost::array besser, wenn du ein statisches array hast...
-
Die erste Syntax ist Mist, du solltest dir mal den Inhalt des so definierten Vektors angucken und anschließend was über den Kommaoperator lesen.
Achja mein Lösungsvorschlag:
static const int hilfsarray[] = { 1, 1, 2, 3, 5 }; const vector<int> myvector(hilfsarray, hilfsarray + sizeof(hilfsarray)/sizeof(hilfsarray[0]));