C ++ spezifiziert Array-Indizes im Initialisierer wie C

8

Ich habe vorher C benutzt (embedded stuff), und ich kann meine Arrays so initialisieren:

%Vor%

d. Ich kann Indizes innerhalb des Initialisierers spezifizieren. Derzeit lerne ich Qt/C++ , und ich kann nicht glauben, dass dies in C ++ nicht unterstützt wird.

Ich habe diese Option: -std=gnu++0x , aber es wird nicht unterstützt. (Ich weiß nicht, ob es in C ++ 11 unterstützt wird, weil Qt mit gcc 4.7.x fehlerhaft arbeitet)

Also, wird es wirklich nicht in C ++ unterstützt? Oder vielleicht gibt es eine Möglichkeit, es zu aktivieren?

UPD: momentan möchte ich const array initialisieren, damit std::fill nicht funktioniert.

    
Dmitry Frank 26.11.2012, 10:28
quelle

3 Antworten

1

Nach Jahren habe ich es nur zufällig getestet, und ich kann bestätigen, dass es in g++ -std=c++11 funktioniert, g ++ Version ist 4.8.2.

    
Dmitry Frank 23.08.2015, 14:34
quelle
7

hm, du solltest std :: fill_n () für diese Aufgabe verwenden ...

wie hier angegeben Ссылка die angegebenen Inits (Erweiterungen) sind nicht in GNU C ++ implementiert

edit: von hier übernommen: initialisiere eine const Array in einem Klasseninitialisierer in C ++

Wie ein Kommentar sagte, können Sie std: vector verwenden, um das gewünschte Ergebnis zu erhalten. Du könntest const immer noch anders herum durchsetzen und fill_n verwenden.

%Vor%     
Najzero 26.11.2012 10:32
quelle
2

Nein, das ist in C ++ nicht möglich. Sie können jedoch den Algorithmus std :: fill verwenden, um die Werte zuzuweisen:

%Vor%

Es ist nicht so elegant, aber es funktioniert.

    
Juraj Blaho 26.11.2012 10:33
quelle

Tags und Links