Die erste Syntax heißt Aggregat-Initialisierung, und Sie können sie nicht auf ein dynamisch zugewiesenes Array anwenden. Bei der dynamischen Zuweisung müssen Sie die Anzahl der Elemente, die Sie initialisieren möchten, in den eckigen Klammern und (optional) den Standardwert in Klammern angeben (wenn das Array initialisiert werden soll). Der Standardwert ist derselbe (falls vorhanden) für alle Elemente.
Vielleicht möchten Sie in die boost :: assign-Bibliothek schauen, die Unterstützung für diese Art der Initialisierung bietet (nicht sicher). Alternativ können Sie (auf Kosten von mehr Code) tun es sich für POD-Typen:
int * array = new int[4];
{
int values[] = { 1,2,3,4 };
memcpy(array, values, sizeof(values));
}
oder für Nicht-pod-Typen:
type * array = new type[4];
{
type values[] = { 1,2,3,4 }; // assuming type(int) constructor
std::copy(values, values+4, array); // better to use some magic to calculate size
}
Auf jeden Fall diese beiden Lösungen vor Ort erfordern Aufteilung und die Kopieren (Bit-Größe/C++) in den dynamisch zugewiesenen Speicher.
möglich Duplikat von [Inline-Array-Initialisierung] (http://stackoverflow.com/questions/4583628/inline-array-initialization) –