如何在构造函数中轻松初始化数组?

问题描述:

如何在构造函数中轻松初始化数组?例如如何在构造函数中轻松初始化数组?

class A 
{ 
    array<array<int, 2>, 2> m; 
    A(int m00, int m01, int m10, int m11) 
     : m {m00, m01, m10, m11} // ??? how to list here 
    {} 
}; 
+1

它的工作原理是,如果你确定变量错别字。 – user975989

class A 
{ 
    std::array<std::array<int, 2>, 2> m; 
    A(int m00, int m01, int m10, int m11) 
     : m {{{m00, m01}, {m10, m11}}} 
    {} 
}; 
+0

我直观地理解了内部数组的'{m00,m01}'和外部的{{...},{...}}',但为什么需要最外层的大括号? – user2079303

+0

我认为答案是正确的。但为什么需要3对'{}'?如果是'vector >',还需要3套? – user1899020

+0

@ user1899020简而言之,因为'array'是一个聚集。由于内部类型本身就是一个聚合,所以实际上可以删除所有大括号,除了外部大括号:'m {m00,m01,m10,m11}' –