Vektoren von Maps mit Klassen als Keys



  • Hallo,

    ich benoetige einen Vektor der Map

    map< multinom_realisation*, vector<double>, bool()(multinom_realisation, multinom_realisation*) > nucl_sep_em_prob (fn_pt)

    wobei

    bool(*fn_pt)(multinom_realisation*, multinom_realisation*) = multinom_realisation_comp

    und multinom_realisation und multinom_realisation_comp eine von mir erstellte Klasse bzw. Funktion sind. Problem ist nun, dass - wenn wir mal annehmen, der Vektor solle n-dimensional sein - ich nicht weiss wie ich sowohl fn_pt als auch n uebergeben kann. Ich habe mal geraten, dass es

    vector< map< multinom_realisation*, vector<double>, bool()(multinom_realisation, multinom_realisation*) > > nucl_sep_em_prob (n) (fn_pt)

    sein koennte (ist es aber offenbar nicht). Weiss jemand, wie man soetwas macht?



  • Hi,

    wenn ich das richtig sehe, ist für das Erzeugen der Map die Dimension der vectoren nicht wichtig, sondern beim Erzeugen des Vectors vor der Zuweisung:

    map< multinom_realisation*, 
         vector<double>, 
        bool(*)(multinom_realisation*, multinom_realisation*) > 
            nucl_sep_em_prob (fn_pt);
    
    vector<double> meinVec(n);
    multinom_realisation meinKey;
    
    nucl_sep_em_prob[&meinKey] = meinVec;
    

    Das bedeutet natürlich auch, dass in Deiner Map vectoren unterschiedlicher Länge stecken können, aber so ist sie nunmal, die gute alte Map.... 😉 (eigetlich liegt es natürlich am vector 😉 ).

    BTW: so richtig schön zu lesen finde ich Dein Beispiel ja nicht. Es hätte durch die Verwendung von A, B und C ebensowenig an Qualität verloren wie durch die Verwendung einer Funktor-Klasse ... 😃

    Gruß,

    Simon2.


Anmelden zum Antworten