Initialisiere eine Struktur, die Vektor enthält

8

Ich suche nach einer Methode für die Initialisierung einer komplexen Struktur, die Vektor in einer einzelnen Zeile enthält.

Zum Beispiel, wenn ich diese Struktur habe:

%Vor%

Ich kann C auf diese Weise initialisieren: C c = {{0.0,0.1},{1.0,1.1}};

Aber was, wenn ich eine Struktur so initialisieren muss?

%Vor%

Ich muss es in einer einzigen Zeile machen, weil ich den Benutzern meiner Anwendung erlauben möchte, alle Anfangswerte in einem einzigen Feld anzugeben. Und natürlich würde ich eine Standardmethode bevorzugen und keine benutzerdefinierte.

Danke!

    
Maverik 02.02.2012, 16:35
quelle

6 Antworten

9

Sie können C auf sehr ähnliche Weise in C ++ in C initialisieren:

%Vor%     
Mankarse 02.02.2012, 16:38
quelle
3

Wenn Sie nicht C ++ 11 verwenden (damit Sie den Vorschlag von Mankarse nicht verwenden können), kann boost helfen:

%Vor%     
Random Wombat 02.02.2012 18:01
quelle
0

Sie könnten dies tun:

%Vor%

Aber offensichtlich ist es nicht ideal, da alle Werte in Ihrem Vektor gleich sein müssen.

    
Jim Lahey 02.02.2012 16:48
quelle
0

Sie müssen nur einen der Konstruktoren verwenden, wenn Sie nicht haben die neue C ++ 11-Initialisierungssyntax.

%Vor%

Der obige Vektor hat 100 Elemente. Es gibt keine Möglichkeit, jedes Element in der Konstruktion eines Vektors eindeutig zu initialisieren.

Sie könnten ...

machen %Vor%

oder wenn Sie immer die Anzahl der Elemente kennen, verwenden Sie ein std :: -Array, das Sie wie gewünscht initialisieren können.

    
David 02.02.2012 16:54
quelle
0

Die Frage ist, wie man B im zweiten Beispiel initialisiert?

Sie können einen Vektor nicht so initialisieren:

%Vor%

Sie können dies tun

%Vor%

(es gibt bessere Möglichkeiten, das zu tun). Das ist aber kein "Einzeiler".

Das funktioniert und ich habe es getestet:

%Vor%     
CashCow 02.02.2012 16:52
quelle
-1
%Vor%

dann können Sie mit etwas wie

initialisieren %Vor%     
DilithiumMatrix 02.02.2012 16:51
quelle

Tags und Links