Wie Sie festgestellt haben, können Sie kein Array mit variabler Länge auf dem Stack erstellen. Sie haben also die Wahl, es entweder auf dem Heap zu allozieren (was Probleme mit der Speicherverwaltung mit sich bringt) oder eine std::vector
anstelle eines Arrays im C-Stil:
std::vector<int> possibilities(SIZE);
for (int i = 0; i < SIZE; i++)
{
possibilities[i] = i;
}
Wenn Sie es noch auffälliger haben wollen, können Sie STL verwenden, um diese Sequenz für Sie zu erzeugen:
// This is a "functor", a class object that acts like a function with state
class IncrementingSequence
{
public:
// Constructor, just set counter to 0
IncrementingSequence() : i_(0) {}
// Return an incrementing number
int operator() () { return i_++; }
private:
int i_;
}
std::vector<int> possibilities(SIZE);
// This calls IncrementingSequence::operator() for each element in the vector,
// and assigns the result to the element
std::generate(possibilities.begin(), possibilities.end(), IncrementingSequence);