Array Initialisierung



  • Hallo zusammen,

    ich habe folgende classe als Datenstruktur definiert:

    class Groups
    {
     public:
      float *starttime;
      float *endtime;
      int *sequenz;
      float measure();
    };
    

    startstime, endtime und sequenz sind array pointer.

    nun habe ich ein Messgerät das mir sehr viele viele voele Messwerte liefert. Ich möchte diese Daten in diese Datenstruktur füttern. Schön wäre es wenn es so klappen würde:

    Groups g[GROUPSIZE];
    
    g[0].starttime = {0.12,0.11,....} //12 Werte
    g[0].endtime = {0.22,0.23...} //12 Wert
    g[0].sequenz = {2234,2235,...} //12 Wer
    
    g[1].starttime = ....
    ...
    ...
    g[233].starttime
    ..
    

    leider funktioniert es so nicht. Hat jemand ein Tipp für mich wie es so ähnlich funkrioneren könnte? Es wäre schön, wenn ich nicht viele zwischenschritte machen müsste.

    Danke+Gruss,
    Haksi



  • Nimm für die float einen Container und definier für Group einfach einen Konstruktor.

    class Groups
    {
     public:
      Groups ( std::vector<float> start,std::vector<float> end...)
    : //Initialisierungsliste
    starttime ( start ), 
    entime ( end )
    ...
    {
    }
      std::vector<float> starttime;
      std::vector<float> endtime;
    ...
    };
    

    Dann kannst du das dann enfach zuweisen.

    std::vector<float> v,v2;
    //v/v2 füllen
    g[0] = Groups ( v , v2 ..);
    

    Um das ("umständliche") befüllen des vectors kommst du nicht drum herum. (ein Nachteil der Standardcontainer im Vergleich zu einem Array..)



  • drakon schrieb:

    Um das ("umständliche") befüllen des vectors kommst du nicht drum herum. (ein Nachteil der Standardcontainer im Vergleich zu einem Array..)

    Es gibt ja noch Boost.Assign. Ist zwar nicht gerade sehr schön, aber wenigstens kann man gleich mit list_of() einen Container initialisieren.

    Im nächsten C++-Standard sollen Initialisierungslisten auch für Container unterstützt werden.



  • Nexus schrieb:

    Im nächsten C++-Standard sollen Initialisierungslisten auch für Container unterstützt werden.

    Genau. Ist ein template und nennt sich initializer_list (N2798 / 18.8)

    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm

    Oder auch hier ganz schön zu sehen:
    http://csclub.uwaterloo.ca/media/C++0x - An Overview.html


Anmelden zum Antworten