Ich versuche ein Array von Bools wie folgt zu initialisieren:
%Vor%aber wenn ich es debugge, sehe ich nur das erste Element des Arrays initialisiert, die anderen sind falsch. Wie kann das so sein? Ich verwende Qt auf Ubuntu 10 und die Initialisierung wird auf einem lokalen Array innerhalb einer Methode durchgeführt.
Ok danke für deine Antworten.
Weil die Array-Initialisierung in C ++ funktioniert. Wenn Sie nicht explizit für jedes Element einen Wert angeben, wird dieses Element standardmäßig auf Null gesetzt (oder hier auf false)
%Vor%Beachten Sie, dass
%Vor%Wird alle Werte auf false setzen oder müssen sie zufällig gesetzt werden, abhängig davon, wo diese definiert ist.
Sie haben missverstanden. Offenbar werden alle nicht erwähnten Elemente auf den gleichen Wert initialisiert wie der letzte explizit initialisierte Wert. Der zuletzt genannte Wert war true
, also würden alle weiteren Elemente auch auf true
initialisiert werden. Ich hatte einmal denselben Glauben, aber ich habe schnell etwas anderes gelernt.
So funktioniert das nicht. Alle nicht erwähnten Elemente werden standardmäßig initialisiert, was für bool
bedeutet false
.
Um alle Elemente auf true
zu setzen, versuchen Sie etwas wie std::fill_n
:
Da Sie nur das erste Element des Arrays explizit initialisiert haben, wird nur das erste Element initialisiert und die restlichen nicht.