[英]How do you initialize (through initializer lists) a multidimensional std::array in C++11?
我试图通过初始化程序列表初始化2D std :: array但是编译器告诉我初始化程序太多了。
例如:
std::array<std::array<int, 2>, 2> shape = { {1, 1},
{1, 1} };
编译器错误:错误: 'std::array<std::array<int, 2ul>, 2ul>'
初始化程序太多
但显然没有太多。 难道我做错了什么?
尝试再添加一对{}
以确保我们正在初始化内部C数组。
std::array<std::array<int, 2>, 2> shape = {{ {1, 1},
{1, 1} }};
或者只是删除所有括号。
std::array<std::array<int, 2>, 2> shape = { 1, 1,
1, 1 };
我建议(甚至没有尝试过,所以我可能错了)
typedef std::array<int, 2> row;
std::array<row,2> shape = { row {1,1}, row {1,1} };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.