array aus tuple füllen



  • Hallo,

    ich habe Schwierigkeiten, inzwischen bin ich mir gar nicht mehr sicher, wo überhaupt nicht. Jedenfalls habe ich hier Schwierigkeiten, ein Array aus tuple zu füllen. Ich hoffe, die Nennung der Fehlermeldung ist in diesem Fall überflüssig, weil der Fehler vom Fortgeschrittenen wie vom Compiler im Gegensatz zu mir sofort erkannt werden müsste.

    #include <array>
    #include <tuple>
    
    typedef std::tuple <int, int, int> i3tuple;
    
    int main()
    {
    
        std::array <i3tuple, 3> arr_t;
    
        arr_t.at(0) = {0,0,0}; //falsch
        arr_t = { {0,0,0}, {1,1,1}, {2,2,2} }; //falsch
    
    }
    

    LG



  • Man kann std::tuple nicht list-initialize n. Schreib stattdessen also:

    arr_t.at(0) = i3tuple{ 0,0,0 };
        arr_t = { i3tuple{ 0,0,0 }, i3tuple{ 1,1,1 }, i3tuple{ 2,2,2 } };
    

    Alternativ kannst du auch std::make_tuple verwenden. Wenn dein tuple jedoch immer nur aus ein und demselben Typ besteht (hier int ), dann würde ich an deiner Stelle eher zu std::array<std::array<int, 3>, 3> oder std::array<int, 3 * 3> greifen.

    LG



  • Fytch schrieb:

    Alternativ kannst du auch std::make_tuple verwenden.

    LG

    Ah, danke. Den hatte ich doch ganz vergessen. In diesem Fall war dies mein Fehler. Danke auch für die anderen Anmerkungen, der tuple wird später aber verschiedene Typen beinhalten.


Anmelden zum Antworten