Arrays mehreren Werte "gleichzeitig" zuweisen

Padawan

Erfahrenes Mitglied
Hallo Leute,

es ist ja an sich möglich Arrays folgenderweise zu Initialisieren:
Code:
int myArray[12] = {1, 4, 7, 8, 9, 10, 87, 22, 34, 8, 14, 48};

Ist es möglich Werte einem schon bestehenden Array folgendermaßen zu setzen:
Code:
int myArray[12];
myArray = {1, 4, 7, 8, 9, 10, 87, 22, 34, 8, 14, 48};

Ich würde mich auf eure Antworten freuen.

Lg
Padawan
 

Padawan

Erfahrenes Mitglied
Hi,

bei mir schmeisst der Compiler Fehlermeldungen raus, wenn ich die 2. Variante mache:
Code:
||=== Build: Debug in Test (compiler: GNU GCC Compiler) ===|
/home/TestCodes/Test/main.cpp||In function ‘void output_array()’:|
/home/TestCodes/Test/main.cpp|21|warning: extended initializer lists only available with -std=c++11 or -std=gnu++11|
/home/TestCodes/Test/main.cpp|21|error: assigning to an array from an initializer list|
||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

Die Fehlermeldung erschien zum folgendem Code:
C++:
#include <iostream>

const int Fields = 12;
void output_array();


using namespace std;

int main()
{
    output_array();
    cout << "Hello world!" << endl;
    cin.get();
  
    return 0;
}

void output_array()
{
   double Probabilities[12];
   Probabilities = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.11, 0.12, 0.13};

   for(int i = 0; i < Fields; i++)
   {
        cout<<i<<". field:  "<< Probabilities[i]<<endl;
   }
}

Daher auch meine frage.
Ich würde mich freuen, wenn du /ihr mir weiter helfen könntet.

Lg
Padawan
 

cwriter

Erfahrenes Mitglied
Daher auch meine frage.
Ich würde mich freuen, wenn du /ihr mir weiter helfen könntet.
Die Fehlermeldung sagt es eigentlich schon:
"warning: extended initializer lists only available with -std=c++11 or -std=gnu++11".
Füge deinem makefile das -std=c++11 an (oder setze es in der IDE) und das Problem müsste behoben sein.

Es sei zudem noch angemerkt, dass du bei Probabilities die Grösse entsprechend mit der Konstanten Fields angeben solltest. Zudem macht es in deinem Fall nicht viel Sinn, die Definition nicht schon zu Beginn auf den Array anzuwenden.

Gruss
cwriter
 

cwriter

Erfahrenes Mitglied
Weil beim zweiten die Variable nicht im Scope wäre, wo ich es benutze und der Array feste Werte hat.
Verstehe ich nicht - funktioniert es denn jetzt?
"Feste Werte": Ist ja nicht const? Da kannst du noch reinschreiben. Und wenn du z.B. den Array durch verschiedene if-Verzweigungen jagen und dort den jeweils passenden Wert setzen willst, dann wäre es wohl praktischer, würdest du deine möglichen Folgen als konstante int-Arrays definieren (sodass es ins .data-Segment kommt) und dann statt eines Stackarrays einen Pointer auf den Beginn der jeweiligen Blöcke zu haben (ist effizienter für die Maschine).

cwriter
 

sheel

I love Asm
Variablen im Header?
Sobald du den header in mehr als eine cpp-Datei einbindet, gehts nicht mehr.
...
Siehe extern.