проще было бы использовать тогда уже vector а не array
а облачать еще в скобки нужно потому что это уже не просто данные массива
упрощенно array это template<class Ty, size_t Size> struct {Ty[Size] data;}
а подобные простые классы или структуры (или union) можно инициализировать упрощенно
у меня уже тут ошибку дает
std::vector<std::array<int, 2>> data2 = { { 1, 2 } };
а вот так не дает
std::vector<std::vector<int>> data = { { 1, 1 } };
можно присваивать, как ты присвоил a
с vector of array не пашет упрощение, потому что список инициализации для
вот тут про это говорится
https://stackoverflow.com/questions/6041459/c-vector-of-arrays
из-за того что это уже не просто array, а vector<array> правило для упрощения инициализации не работает
можно еще тут прочесть (не сказать что я все уяснил)) )
http://ru.cppreference.com/w/cpp/container/array
http://ru.cppreference.com/w/cpp/container/vector
http://ru.cppreference.com/w/cpp/language/aggregate_initialization
http://ru.cppreference.com/w/cpp/language/list_initialization
(хотя кажется лучше en версию читать)) )
чтобы понять как он хранится в памяти проще в ide дебаг запустить и посомтреть locals
(у vector есть allocator,allocator_vals,first,last)