6 Stimmen

Füllen Sie das int-Array von Null bis zu einer bestimmten Zahl auf

Ich muss das int[]-Array in C++ von Null bis zu einer durch eine Variable definierten Zahl ausfüllen, aber ISO C++ verbietet Arrays mit variabler Länge... Wie kann ich das Array einfach ausfüllen? Muss ich den Speicher zuweisen/freigeben?

int possibilities[SIZE];
unsigned int i = 0;
for (i = 0; i < SIZE; i++) {
    possibilities[i] = i;
}

btw. wenn Sie fragen würden - Ja, ich brauche genau Standard int[] Arrays, keine Vektoren, keine Karten usw.

0voto

Skurmedel Punkte 20549

Wenn Sie SIZE zu einer Konstante machen (Makro oder const ), können Sie damit die Größe Ihres statischen Arrays angeben. Wenn es nicht möglich ist, eine Konstante zu verwenden, z. B. weil Sie die gewünschte Größe von außerhalb des Programms lesen, müssen Sie den Speicher zuweisen.

Kurz gesagt, wenn Sie die Größe zur Kompilierungszeit nicht kennen, müssen Sie den Speicher wahrscheinlich zur Laufzeit zuweisen.

0voto

claytonjwong Punkte 746

Std::generate() kann mit einer veränderbaren Lambda-Funktion verwendet werden, um prägnanter zu sein. Das folgende C++-Snippet platziert die Werte 0..9 einschließlich in einen Vektor A der Größe 10 und gibt diese Werte in einer einzigen Zeile der Ausgabe aus:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    size_t N = 10;
    vector<int> A(N);
    generate(A.begin(), A.end(), [i = 0]() mutable { return i++; });
    copy(A.begin(), A.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
    return 0;
}

-1voto

bpavlov Punkte 1050

Einfach ein dynamisches Array verwenden?

type * pointer;
pointer = new type[number_of_elements];

void main() 
{
int limit = 0; // Your lucky number
int * pointer = NULL; 
cout << "Please, enter limit number: ";           
cin >> n;
pointer = new int[limit+1]; // Just to be sure.
    for (int i = 0; i < n; i++) 
    {
         pointer[i] = i; // Another way is: *(pointer+i) = i (correct me if I'm wrong)   
    }
delete [] pointer; // Free some memory
pointer = NULL; // If you are "pedant"
}

Ich behaupte nicht, dass dies die beste Lösung ist. Ich hoffe, es hilft.

-2voto

Amir Punkte 1811

Es sollte helfen Sie Mann sein

int* a = NULL;   // Pointer to int, initialize to nothing.
int n;           // Size needed for array
cin >> n;        // Read in the size
a = new int[n];  // Allocate n ints and save ptr in a.
for (int i=0; i<n; i++) {
    a[i] = 0;    // Initialize all elements to zero.
}
. . .  // Use a as a normal array
delete [] a;  // When done, free memory pointed to by a.
a = NULL;     // Clear a to prevent using invalid memory reference

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X