std::array too many initializers



  • typedef std::array<std::array<int, 3>, 5> array2d;
    array2d arr = {{2,7,5}, {3,1,1}, {2,1,-7}, {0,2,1}, {1,6,8}};
    

    line 2...too many initializers!

    was ist da falsch?


  • Mod

    Es entspricht zwar streng genommen nicht dem Standard, aber in den üblichen Implementierungen von std::array brauchst du doppelte geschweifte Klammern:

    array2d arr = {{{{2,7,5}}, {{3,1,1}}, {{2,1,-7}}, {{0,2,1}}, {{1,6,8}}}};
    


  • array2d arr = {{{2,7,5}, {3,1,1}, {2,1,-7}, {0,2,1}, {1,6,8}}};
    

    edit: SeppJ war schneller. Und ueberall doppelte Klammern ist wohl auch konsistenter.



  • oder auch nur ein klammernpaar: http://ideone.com/Nh5IUV

    #include <array>
    
    typedef std::array<std::array<int, 3>, 5> array2d; 
    
    int main()
    {
        array2d arr = {2,7,5,  3,1,1,  2,1,-7,  0,2,1,  1,6,8};
    }
    

Log in to reply