2012-10-02 9 views
8

Gibt es eine Möglichkeit in C++, ein Float-Array zu erstellen, das seine Werte initialisiert?Initialisierung eines Float-Arrays auf Konstruktion

Zum Beispiel, ich tue:

float* new_arr = new float[dimension]; 
for(unsigned int i = 0; i < dimension; ++i) new_arr[i] = 0; 

Ist es möglich, die Zuordnung während der Konstruktion zu tun?

Antwort

18
float* new_arr = new float[dimension](); 
+1

Und mit einheitlicher Initialisierung (C++ 11) können Sie 'new float [dimension] {}' machen oder sogar Werte angeben: 'new float [dimension] {1.f, .5f, 1.3f}'. – bames53

+0

Wenn Sie nicht C++ 11 verwenden und es tun möchten, können Sie wahrscheinlich irgendwo ein statisches const-Array deklarieren, in dem Sie die Anfangswerte speichern und über Ihre neu zugewiesenen Arrays speichern. – Wug

+0

@Wug nicht 'memcpy',' std :: copy' –

8

In diesem speziellen Fall (alle Nullen) Sie Wert Initialisierung verwenden:

float* new_arr = new float[dimension](); 

Statt explizit mit new[] Sie std::vector<float> stattdessen verwenden könnten:

std::vector<float> new_vec(dimension, 0); 
+0

Ich bin nicht frei, die vektorschablone zu verwenden, da ich einige externe lib verwende. Vielen Dank. – Aslan986

+4

@ Aslan986: Wenn das Problem eine Funktion ist, die ein 'float *' erwartet, dann übergib einfach '& v [0] '. Ein 'std :: vector' hat einen zusammenhängenden Puffer garantiert. Also, wenn Sie nicht Bibliothek, Multi-Processing auf Grafikkarte mit benutzerdefinierten Laufzeit, dann verwenden Sie einfach 'std :: vector'. –

+0

+1 für Hinweise zu 'std :: vector'. –

Verwandte Themen